2011-10-11 78 views
0

我有看起來像這樣的關聯數組。向數組添加其他數據

$arr = array(
    "FIRST" => 1, 
    "SECOND => 2, 
    "FOURTH => 4 
); 

這個想法是如何根據表達式將數據「添加」到這個數組。 這裏是我想要做的事:

if(3 == 3) { 
    $str = array("THIRD" => 3); 
} 

$arr = array(
     "FIRST" => 1, 
     "SECOND => 2, 
     $str, 
     "FOURTH => 4 
    ); 

的問題是,上面的代碼添加$ str作爲在$ ARR數組,而不是像「第三」 => 3

+0

您錯過了一個'''',並且'3 == 3'總是如此。 –

回答

2

什麼http://php.net/manual/en/function.array-merge.php

然後你就可以合併兩個數組:

if(3 == 3) { 
    $str = array("THIRD" => 3); 
} 

$arr = array(
     "FIRST" => 1, 
     "SECOND => 2, 
     "FOURTH => 4 
    ); 

$arr = array_merge($arr,$str); 

但你也可以做到這一點的另一種方式:

$arr = array(
     "FIRST" => 1, 
     "SECOND => 2, 
     "FOURTH => 4 
    ); 

if(3 == 3) { 
    $arr["THIRD"]=3; 
} 
1

您必須添加事後要素:

$arr = array(
    "FIRST" => 1, 
    "SECOND" => 2, 
    "FOURTH" => 4 
); 

if (someCondition) { 
    $arr["THIRD"] = 3; 
} 

您可能希望事後排序數組。

0

更改此條件下的行如下。您不需要創建另一個數組並將該數組放入原始數組中。只需參考下面的原始數組。

if(3 == 3) { 
    $arr["THIRD"]= 3; 
} 
-1

描述你可以在PHP檢查eval功能:

eval 
(PHP 4, PHP 5) 

eval — Evaluate a string as PHP code 
<?php 
$string = 'cup'; 
$name = 'coffee'; 
$str = 'This is a $string with my $name in it.'; 
echo $str. "\n"; 
eval("\$str = \"$str\";"); 
echo $str. "\n"; 
?> 

這段代碼將輸出:

這是一個$字符串我的$名字在裏面。

這是我的咖啡杯在 它。

+1

推薦'eval()'幾乎不是一個好主意。在這種情況下,問題顯然與誤解數組的工作方式有關,並且不能用'eval()'明智地解決。 –

0

的問題是 - 就我所見 - 你想在你的數組中創建某種順序。雖然PHP可以對數組進行排序,但它無法處理您所嘗試的內容,因爲它不知道,FIRST必須在SECOND之前出現,等等。如何將任何種類的新數據插入陣列,上面的anwers已經告訴你。我認爲,array_merge()是處理它的最佳方法之一。

爲了做你想做的事情,你需要實現一個功能,它可以比較你的密鑰,然後在usort()中使用它來在你的數組中創建預期的順序。您可以隨後添加新條目,然後重新創建預期訂單。從效率的角度來看,這將是一個相當糟糕的主意。如果您打算在高效環境中使用它,您可能需要考慮花費更多時間處理此問題,並用適當實施的集合對象替換整個對象,這樣可以按照您的需要處理您的鍵值對。

相關問題