13

我想创建一个带有消息的数组。

$myArray = array('my message');

但是使用此代码,myArray如果它已经存在,它将被覆盖。

如果我使用array_push,它必须已经存在。

$myArray = array(); // <-- has to be declared first.
array_push($myArray, 'my message');

否则,它会发霉。

有没有办法让上面的第二个例子工作,而无需先清除$myArray = array();

4

5 回答 5

35

这里:

$myArray[] = 'my message';

$myArray 必须是数组或未设置。如果它保存的值是一个字符串、整数或不实现数组访问的对象,它将失败。

于 2008-12-08T21:43:25.067 回答
7

首先检查数组是否存在,如果不存在,则创建它...然后添加元素,知道数组肯定会在手之前定义:

if (!isset($myArray)) {
    $myArray = array();
}

array_push($myArray, 'my message');
于 2008-12-08T21:47:06.930 回答
3

您应该使用 is_array(),而不是 isset。如果从返回数组或字符串的函数设置 myArray(例如,错误时为 -1),则很有用

如果 myArray 在其他地方声明为非数组,这将防止错误。

if(is_array($myArray))
{
   array_push($myArray,'my message');
}
else
{
   $myArray = array("my message");
}
于 2008-12-08T21:57:12.930 回答
0
if ($myArray) {
  array_push($myArray, 'my message');
}
else {
  $myArray = array('my message');
}
于 2008-12-08T21:48:07.380 回答
0

OIS 的方法会奏效。

或者

if (!isset($myArray)) 
    $myArray=array();
array_push($myArray, 'message');
于 2008-12-08T21:48:39.580 回答