标签归档:小小木同

php把数组作为对象来使用

今天要设计程序的时候想把数组作为一个对象来使用,即:
$arr = array('bin'=>'小小木同');
可以使用$arr->bin得到"小小木同"

开始发现PHP中有一个函数arrayobject(),可以直接把数组转换为对象,但是自己写了段代码测试了下,并不能像预期想的那样来调用。

<?php
 $arr = array('bin'=>'小小木同');
 $arr_obj = new arrayobject($arr);
 var_dump($arr_obj->bin);
 ?>

后来在网上又找了相关的资料才发现原来可以用强制类型转换来实现我想要的功能,如下:


<?php
 $arr = array('bin'=>'小小木同');
 $arr_obj = (object)$arr;
 var_dump($arr_obj->bin);
 ?>

这样能够成功输出:


小小木同

两个截取字符的函数(解决了汉字乱码问题)

function get_word($content,$length,$more=1) {
 if(!$more){
  $length=$length+2;
 }
 if($length>10){
  $length=$length-2;
 }
 if($length && strlen($content)>$length){
  $num=0;
  for($i=0;$i<$length-1;$i++) {
   if(ord($content[$i])>127){
    $num++;
   }
  }
  $num%2==1 ? $content=substr($content,0,$length-2):$content=substr($content,0,$length-1);
  $more && $content.='..';
 }
 return $content;
}

 

 

function cut_string($str, $maxlen) {
 $width = Array(
  0, 12, 4, 4, 4, 6, 6, 10, 8, 4, 5, 5, 6, 6, 4, 6, 4, 6, 6, 6, 6,
  6, 6, 6, 6, 6, 6, 6, 4, 4, 8, 6, 8, 6, 12, 8, 8, 9, 8, 8, 7, 9,
  8, 3, 6, 8, 7, 11, 9, 9, 8, 9, 8, 8, 8, 8, 8, 10, 8, 8, 8, 6, 11,
  6, 6, 6, 4, 7, 7, 7, 7, 7, 3, 7, 7, 3, 3, 6, 3, 11, 7, 7, 7, 7,
  4, 7, 3, 7, 6, 10, 7, 7, 7, 6, 6, 6, 9, 0);

 $str_buffer = "";
 $len_buffer = 0;
 $count = 0;

 $str_len = strlen($str);

 $maxlen = $width[1] * $maxlen / 2;

 while( $count < $str_len )
 {
  $asc = ord(substr($str, $count, 1));

  if( $asc > 127 )
  {
   $len_buffer += $width[1];
   if( $len_buffer > $maxlen )
   {
    $str_buffer .= "..";
    break;
   }
   $str_buffer .= substr($str, $count, 2);
   $count += 2;
  }
  else
  {
   $len_buffer += $width[$asc-30];
   if( $len_buffer > $maxlen )
   {
    $str_buffer .= "..";
    break;
   }
   $str_buffer .= substr($str, $count, 1);
   $count += 1;
  }
 }

 return $str_buffer;
}
echo cut_string("南京晓庄学院,小小木同!",17)."<br>";