向阵列添加其他数据

时间:2011-10-11 12:26:17

标签: php

我有一个看起来像这样的关联数组。

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

这个想法是如何根据表达式向这个数组“添加”数据。 这是我正在尝试做的事情:

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

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

问题是上面的代码在$ arr中添加$ str作为数组,而不是像“THIRD”=> 3

5 个答案:

答案 0 :(得分: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 :(得分:1)

您必须在事后添加元素:

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

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

您可能希望事后对数组进行排序。

答案 2 :(得分:0)

更改此条件下的行,如下所示。您不需要创建另一个数组并将该数组放入原始数组中。只需参考下面的原始数组。

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

答案 3 :(得分:0)

问题是 - 据我所知 - 你想在你的数组中创建某种顺序。虽然PHP可以对数组进行排序,但它无法处理您正在尝试的内容,因为它不知道,FIRST必须在SECOND之前出现,依此类推。如何将任何类型的新数据插入到上面已经告诉过您的数组中。我认为array_merge()是处理它的最好方法之一。

为了实现您的目的,您需要实现一个函数,该函数可以比较您的密钥,然后将其与usort()一起使用,以在您的数组中创建预期的顺序。您可以随后添加新条目,然后重新创建预期订单。从有效性的角度来看,这将是一个相当糟糕的想法。如果您打算在高效的环境中使用它,您可能需要考虑花更多的时间在这个问题上并用正确实现的集合对象替换整个事物,它可以按照您希望的方式处理您的键值对。

答案 4 :(得分:-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";
?>

此代码将输出:

  

这是带有$ name的$ string。

     

这是一杯我的咖啡   它