浏览模式: 普通 | 列表

json Cannot use object of type stdClass as array

[ 2013-01-26 16:16:03 | 作者: admin ]
json_decode(Cannot use object of type stdClass as array)

最近用 php 的 array 處理下述的程式碼,

$author = 'Mary';
$test[$author] = array('message'=>'測試', 'time'=> 1237175074);
$test2 = json_decode(json_encode($test));
print_r($test2[$author]);

一直得到下述的錯誤訊息

Cannot use object of type stdClass as array

這個程式碼,只要第三行加個 true,就可以了。

$author = 'Mary';
$test[$author] = array('message'=>'測試', 'time'=> 1237175074);
...

阅读全文…
p.s. 使用mb_strlen函数必须指定编码

在长度检查方面,数据库使用的是varchar,长度是按字符个数算的,比如“abcdef”算6个字符,“一二三四五六”也算六个字符。而php的strlen方法算出并不一样,strlen("abcdef")是6,而strlen("一二三四五六")是18。这样检查起来就麻烦了。

php处理中文字符数,可以用mb_strlen() ,具有编码无关性,看下面的演示:

mb_strlen('abcdef','utf-8') == 6
mb_strlen('一二三四五六','utf-8') ==6

另外中文的截取也需要mb_substr()也是编码无关性,看演示
<?php   
echo mb_substr('曾经年少爱追梦一心只想往前飞', 0, 7, 'utf-8');   
...

阅读全文…

PHP n个不重复的随机数生成代码

[ 2012-12-13 16:54:13 | 作者: admin ]
p.s. 建议用mt_rand替换rand函数

php取一个随机数的方法
srand((double)microtime()*1000000); //给一个种子
$rand_number= rand(0,100); //取一个 0-100 之间的随机数


php取若干不重复的随机数的方法
方法一:
<?php
//range 是将1到100 列成一个数组
$numbers = range (1,100);
//shuffle 将数组顺序随即打乱
shuffle ($numbers);
//array_slice 取该数组中的某一段
$no=6;
$result = array_slice($numbers,0,$no);
for ($i=0;$i<$no;$i++){
...

阅读全文…

php 数组中随机选取5个

[ 2012-12-13 15:56:26 | 作者: admin ]
随机选取数组元素。

//传入参数。1-20的一个数组。 选取5 个随机数
print_r(randges( $arrNews ,5));
print_r(randges(range(1,20),5));


function randges($numbers,$no){
                     //判断数组长度是否大于所取值的长度
                     if(count($numbers)<$no){echo '你真会开玩笑……';return false;}
                     //得到随机选取元素的长度
                     $numbers ;
                     //shuffle 将数组顺序随即打乱
                     shuffle ($numbers);
                     //产生数组长度
...

阅读全文…

windows下使用PHP实现定时执行脚本

[ 2012-12-13 11:20:40 | 作者: admin ]
一直以来,使用PHP定时运行脚本都是让大家头痛的问题,但是我们确实可以利用windows的计划任务来定时调用PHP脚本,当然这还要感谢PHP.exe。下面,站长将向大家介绍,如何来实现。

目标:根据系统时间定时执行PHP脚本,不需要人工运行(这里以定时新建一个文本文件并写入内容为例)

解决步骤:

1、建立PHP脚本,如下:
<meta charset='utf-8'>
<?php
file_put_contents('D:\www\root\1.txt','ok');
?>
大家,可以看见,我们在这里对将要创建的文件路径使用了绝对路径,这是因为我们将要通过windows命令行来调用此脚本,由于cmd.exe与我们的web根目录是不一样的,而php的文件目录函数只能在web根目录范围内进行操作,所以我们需要使用绝对路径,否则代码将正确执行但是文件将不会被创建。

2、新建.bat文件,代码如下:
"D:\Program ...

阅读全文…
使用 file_get_contents
         $re = file_get_contents($url);
         print_r($re);

  使用curl
         $ch = curl_init("http://www.xg98.com/") ;
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ;
         curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ;
         $output = curl_exec($ch) ;
         $fh = fopen("out.html", 'w') ;
         fwrite($fh, $output) ;
...

阅读全文…

PHP乱码问题,UTF-8(乱码)

[ 2012-12-11 15:56:23 | 作者: admin ]
一.HTML页面转UTF-8编码问题
1.在head后,title前加入一行:

<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
顺序不能错,一定要在

显示的标题有可能是乱码!

2.html文件编码问题:

点击编辑器的菜单:“文件”->“另存为”,可以看到当前文件的编码,确保文件编码为:UTF-8,
如果是ANSI,需要将编码改成:UTF-8。
3.HTML文件头BOM问题:
将文件从其他的编码转换成UTF-8编码时,有时候会在文件的最开始加上一个BOM标签,
在个BOM标签可能会导致浏览器在显示中文的时候出现乱码。
删除这个BOM标签的方法:
1.可以用Dreamweaver打开文件,并重新保存,即可以去除BOM标签!
2.可以用EditPlus打开文件,并在菜单“首选项”...

阅读全文…

PHP unicode解码和解码

[ 2012-12-10 10:09:24 | 作者: admin ]
UNICODE编码在PHP中使用UCS-2编码,之前还真是没有发现,一直还以为是UTF-8就行了。贴出代码:


//将内容进行UNICODE编码,编码后的内容格式:YOKA\u738b (原始:YOKA王)
function unicode_encode($name)
{
  $name = iconv('UTF-8', 'UCS-2', $name);
  $len = strlen($name);
  $str = '';
  for ($i = 0; $i < $len - 1; $i = $i + 2)
  {
  $c = $name[$i];
  $c2 = $name[$i + 1];
  if (ord($c) > 0)
  { // 两个字节的文字
  $str .= '\u'.base_convert(ord($c), 10, 16).base_convert(ord($c2), 10, 16);
...

阅读全文…