我有2个代码块。...
//第一个区块
<div id="a1">
<?php
if (is_array($new_array) || is_object($new_array))
{
foreach ($new_array as $name => $val)
{
echo $name . " : " . $val[0] . " , " . $val[1]. " , " . $val[2];
}
}
unset($new_array);
?>
</div>
第二个区块
<div id="a2">
<?php
if (is_array($new_array) || is_object($new_array))
{
foreach ($new_array as $name => $val)
{
echo $name . " : " . $val[0] . " , " . $val[1]. " , " . $val[2];
}
}
unset($new_array);
?>
</div>
第一块或第二块将在一天之内给出空结果。意思是如果今天,第一块将给出空结果,明天第二块将给出空结果。
问题:
今天,第二个块的值是空的,它给出了注意:未定义变量:new_array 错误,所以我在第二个代码块之前对此进行了初始化:
$new_array='';
它工作正常。...但是明天第二块代码将给出此结果:
警告:字符串偏移量非法, 致命错误:未捕获错误:无法将字符串偏移量用作数组
因此,我需要删除此代码:$new_array='';
在第二个块之前&我需要放置在第一个块之前.....
答案 0 :(得分:7)
如何使用if (isset($new_array)) {...}
或将其初始化为数组$new_array = [];
您可以将isset添加到其他检查中,例如:
if (isset($new_array) && (is_array($new_array) || is_object($new_array))) { .... }
有关isset()
的更多信息答案 1 :(得分:1)
您可以使用isset()函数检查$ new_array是否设置。如下编辑代码
// 第一个区块
<div id="a1">
<?php
if(isset($new_array)){
if (is_array($new_array) || is_object($new_array))
{
foreach ($new_array as $name => $val)
{
echo $name . " : " . $val[0] . " , " . $val[1]. " , " . $val[2];
}
}
}
unset($new_array);
?>
</div>
// 第二个区块
<div id="a2">
<?php
if(isset($new_array)){
if (is_array($new_array) || is_object($new_array))
{
foreach ($new_array as $name => $val)
{
echo $name . " : " . $val[0] . " , " . $val[1]. " , " . $val[2];
}
}
}
unset($new_array);
?>
</div>
答案 2 :(得分:1)
您正在寻找isset()
/ empty()
,也许是简短的if/else
。
示例:
<div id="a1">
<?php
if (is_array($new_array) || is_object($new_array))
{
foreach ($new_array as $name => $val)
{
echo $name . " : " . $val[0] . " , " . $val[1]. " , " . $val[2];
}
}
unset($new_array);
?>
</div>
比方说$new_array
未设置/未设置数组/未设置和对象。您的if
语句将不会继续,因为它将收到false
。
如果您希望始终执行代码,则可以执行以下操作:(请参阅注释以获取解释)。
<div id="a1">
<?php
$new_array = []; // [] = short for array();. $new_array will now always be an array.
// You could also do something like this:
$new_array = (! is_array($new_array)) ? $new_array = [] : $new_array; // Here you say $new_array is always set with his code and else it will be an empty array.
if (is_array($new_array)) //
{
foreach ($new_array as $name => $val)
{
echo $name . " : " . $val[0] . " , " . $val[1]. " , " . $val[2];
}
}
unset($new_array);
?>
</div>
答案 3 :(得分:1)
您可以先检查数组是否存在。如果存在,则检查它是否为空(如果它是一个数组)或计数其中的元素数大于零(如果是对象数组)
<div id="a1">
<?php
if (is_array($new_array) || is_object($new_array)) {
if (isset($new_array)) {
if (empty($new_array) || count($new_array) > 0) {
foreach ($new_array as $name => $val) {
echo $name . " : " . $val[0] . " , " . $val[1] . " , " . $val[2];
}
}
}
}
unset($new_array);
?>
</div>
答案 4 :(得分:0)
数据类型不匹配会导致此错误。 代替
$new_array='';
像
一样初始化$new_array=array();
一旦取消设置,它就会破坏该数组。因此在第一个块代码之前对其进行初始化