php is_array数组 Notice: Array to string conversion

 更新时间:2016年11月25日 17:37  点击:1544
今天在使用一个正则提取字符串中指定字符串内容时我在使用一个is_array()时出现Array to string conversion错误提示了,下面把这个给大家分享一下吧。

例子

$str = preg_match_all('/(<UL class=\"list\">).*?(<\/UL>)/is', $str,$array);

if(is_array($$arrayList[0]) )
{
}

结果发现

Notice: Array to string conversion in E:\get_data.php on line 45

Notice: Undefined variable: Array in E:\get_data.php on line 45

仔细检查一下发现

is_array($$arrayList[0]多了一个美元了,如果说是RMB就好了

我们修改一下

if(is_array($arrayList[0]) )
{
}

执行就没有问题了哦。

比较悲剧的是今天使用了cdn+文件缓存,结果网站出现一些内容不正常了,我折腾了半天没发现问题于时重启了服务器,结果重启之后apache 弹出错误应用程序 httpd.exe,版本 2.2.22.0,错误模块 php5ts.dll提示了,我查看了一下系统日志发现一段长长的代码,如下所示

apache错误提示

事件类型: 信息
事件来源: Application Error
事件种类: (100)
事件 ID: 1004
日期:  2014-6-27
事件:  15:55:13
用户:  N/A
计算机: xxxx
描述:
报告队列中的错误: 错误应用程序 httpd.exe,版本 2.2.22.0,错误模块 php5ts.dll,版本 5.2.17.17,错误地址 0x000acde5。

有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
数据:
0000: 41 70 70 6c 69 63 61 74   Applicat
0008: 69 6f 6e 20 46 61 69 6c   ion Fail
0010: 75 72 65 20 20 68 74 74   ure  htt
0018: 70 64 2e 65 78 65 20 32   pd.exe 2
0020: 2e 32 2e 32 32 2e 30 20   .2.22.0
0028: 69 6e 20 70 68 70 35 74   in php5t
0030: 73 2e 64 6c 6c 20 35 2e   s.dll 5.
0038: 32 2e 31 37 2e 31 37 20   2.17.17
0040: 61 74 20 6f 66 66 73 65   at offse
0048: 74 20 30 30 30 61 63 64   t 000acd
0050: 65 35                     e5     

直接百度搜索问题

解决版本有两个:

1.复制php5ts.dll到apaceh的bin目录下或者系统目录下c:/windows/system32后,重启系统。

2.php目录下的libmysql.dll拷贝到到系统目录system32下就好了。

突然出这个问题也担心是中毒了所以对服务器进行了一些限制操作,在php.ini中加上了

disable_functions =  phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen

然后重启apache,问题解决了

php页面空白我们从几个方法入手,一个是php把错误提醒功能给关闭了,另一个是程序没有返回结果,当然如果是使用了php操作数据库我们可以数据库报错未进行判断处理,下面我们从这三个方法来给大家分析php页面空白不报错解决办法。

1.php程序不报错

windows系统,我们在找到apache安装目录下的php.ini

display_errors = Off 改成 display_errors = On

linux系统 PHP配置文件路径:/uer/local/php/etc/php.ini

display_errors = Off 改成 display_errors = On

还有程序中是不是加有

error_reporting = E_ALL;   /* 最严格的错误报告级别, 开发阶段可开启 */

error_reporting = E_ALL &~ E_NOTICE /* 除了notice以外的错误 */

error_reporting = E_ERROR | E_PARSE | e_CORE_ERROR /* 只考虑致命的运行时错误,新解析错误

如果有我们把它们取消掉

2.php程序执行没有结果返回

例子

function abc()
{
  echo 'http://www.111cn.net';
}

你直接执行页面就是空白页面了,我们需要执行调用函数

echo abc();才会有输出

3.数据库sql错误,但没有给出错误报告提示

例子

$sql ="select * from a where aaaaf=ccc ";
mysql_query( $sql );

这样执行sql有错误但也没有错误提示我们只要在后在加上mysql_error();即可

$sql ="select * from a where aaaaf=ccc ";
mysql_query( $sql ) or die(mysql_error());


友情提示

有些时间我们是页面编码错误也有可能是页面空白哦,不过开启了错误提醒功能还是会显示出来哦。

Undefined index是告诉我们变量未定义或变量申明有点问题才会告诉我们一个并不致命的warning,那么我们要如何来解决这些问题呢?下面一聚教程小编来给各位整理了一些解决warning问题的方法。

1.找到未定义变量进行处理

 代码如下 复制代码

addslashes(htmlspecialchars(isset($_POST[$str])?$_POST[$str]:''));


2.把错误给过滤掉

 代码如下 复制代码

@$page=$_GET["page"];

3.修改php.ini配置文件进行所有错误过滤

 代码如下 复制代码

error_reporting = E_ALL & ~E_NOTICE

或者
ini_set( ‘error_reporting’, E_ALL ^ E_NOTICE );

ini_set( ‘display_errors’, ’0′ );

4.在程序中直接加一个处理

 代码如下 复制代码

if (!$cfg['debug']) {
 error_reporting(0);
 ob_start('ob_gzhandler');
} else {
 error_reporting(E_ALL ^ E_NOTICE);
}

5.在php文件最开始处加如下一句代码

 代码如下 复制代码

error_reporting(0);

总结:

上面所有方法中最好的方法是方法一,这样在对程序性能上是有很好的帮助,如果你页面错误过多直接过滤掉会影响性能的哦,我以前介绍过一篇这样的文章大家可在本地搜索。

curl乱码有两个方面的原因一个是因为我们采集页面的php页面编码与远程文档编码不致导致的,另一种可能是页面进入了gzip压缩传输导致的,那么我们要如何解决这些问题呢?

gzip压缩传输导致乱码

今天在采集京东的时候发现返回的数据是乱码,网上说可能和压缩有关,看了一下京东的头信息的确进行gzip加密,好吧,那就解压吧

 代码如下 复制代码

$return = gzdecode($return); //将return的字符进行解码

另一种解决办法

curl_setopt($ch, CURLOPT_ENCODING, 'gzip');


页面编码问题

 代码如下 复制代码

mb_convert_encoding($str, 'utf-8', 'GBK,UTF-8,ASCII');就行了

[!--infotagslink--]

相关文章

  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • 详解C++ string常用截取字符串方法

    这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • php数组操作 键名比较 差集 交集赋值

    本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
  • C#二维数组基本用法实例

    这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • C#数组的常用操作方法小结

    Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
  • mybatis 返回Integer,Double,String等类型的数据操作

    这篇文章主要介绍了mybatis 返回Integer,Double,String等类型的数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-25
  • php curl模拟post请求和提交多维数组的示例代码

    下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <&#63;php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
  • C# 拷贝数组的几种方法(总结)

    下面小编就为大家带来一篇C# 拷贝数组的几种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • PHP 二维数组根据某个字段排序的具体实现

    本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07
  • C#实现字符串转换成字节数组的简单实现方法

    这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
  • c#将字节数组转成易读的字符串的实现

    这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • 浅谈C++中的string 类型占几个字节

    本篇文章小编并不是为大家讲解string类型的用法,而是讲解我个人比较好奇的问题,就是string 类型占几个字节...2020-04-25
  • C#读取文件所有行到数组的方法

    这篇文章主要介绍了C#读取文件所有行到数组的方法,涉及C#针对文件及数组的相关操作技巧,需要的朋友可以参考下...2020-06-25
  • 将二维数组转为一维数组的2种方法

    如何将下面的二维数组转为一维数组。复制代码 代码如下:$msg = array(  array(    'id'=>'45',    'name'=>'jack'  ),  array(    'id'=>'34',    'name'=>'mary'  ),  array(    'id...2014-05-31
  • php中数组写入文件方法

    在php中为我们提供了一个函数var_export 他可以直接将php代码入到一个文件中哦。 代码如下 复制代码 var_export($times,true);后面不加tru...2016-11-25
  • 【C#基础】Substring截取字符串的方法小结(推荐)

    这篇文章主要介绍了Substring截取字符串方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • java中String类型变量的赋值问题介绍

    下面小编就为大家带来一篇java中String类型变量的赋值问题介绍。小编觉得挺不错的。现在分享给大家,给大家一个参考。...2016-03-28
  • PHP 如何获取二维数组中某个key的集合

    本文为代码分享,也是在工作中看到一些“大牛”的代码,做做分享。 具体是这样的,如下一个二维数组,是从库中读取出来的。 代码清单: 复制代码 代码如下: $user = array( 0 => array( 'id' => 1, 'name' => '张三', 'ema...2014-06-07
  • js有序数组的连接问题

    1.前言 昨天碰到一道关于如何解决有序数组的连接问题,这是一个很常见的问题。但是这里要考虑到代码的效率问题,因为要连接的数组都是有序的,这是一个非常重要的前提条件。2.简单但效率不高的算法 我首先想到的是使用...2013-10-04