2011-10-11 138 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()中使用它来在你的数组中创建预期的顺序。您可以随后添加新条目,然后重新创建预期订单。从效率的角度来看,这将是一个相当糟糕的主意。如果您打算在高效环境中使用它,您可能需要考虑花费更多时间处理此问题,并用适当实施的集合对象替换整个对象,这样可以按照您的需要处理您的键值对。