2008-12-08 31 views
7

我想創建一個包含消息的數組。php:推送到可能存在也可能不存在的數組

$myArray = array('my message'); 

但是使用這個代碼,myArray將被覆蓋,如果它已經存在。

如果我使用array_push,它必須已經存在。

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

否則,它會變成水晶。

有沒有辦法讓上面的第二個例子工作,沒有首先清除$myArray = array();

回答

5

檢查,如果沒有,創建它...然後添加的元素,明知陣列必將手之前定義:

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

array_push($myArray, 'my message'); 
+0

管理單元...除了新的一點,我不認爲在php – benlumley 2008-12-08 21:49:18

27

這裏:

$myArray[] = 'my message'; 

$ myArray的必須是一個數組或沒有設置。如果它保存的值是一個字符串,整數或沒有實現arrayaccess的對象,它將失敗。如果陣列第一存在

+1

這很奇怪,但它是真實的。 PHP不會觸發任何錯誤/警告/通知。 – troelskn 2008-12-08 21:46:21

+1

它的一個特點。 :) – OIS 2008-12-08 21:48:27

+0

...一個令人難以置信的有用的功能(至少對我來說) – da5id 2008-12-08 21:50:26

0
if ($myArray) { 
    array_push($myArray, 'my message'); 
} 
else { 
    $myArray = array('my message'); 
} 
0

OIS '的方式將工作。

或者

if (!isset($myArray)) 
    $myArray=array(); 
array_push($myArray, 'message'); 
3

您應該使用is_array(),而不是isset。 如果從返回數組或字符串的函數設置myArray,則有用(例如,錯誤時爲-1)

如果將myArray聲明爲不是其他地方的數組,則這將防止錯誤。

if(is_array($myArray)) 
{ 
    array_push($myArray,'my message'); 
} 
else 
{ 
    $myArray = array("my message"); 
} 
相關問題