Foreach不会在数组元素中插入键和值

时间:2014-03-18 18:29:14

标签: php arrays foreach

当我向此函数发送数组和值时,我希望将新密钥(id)及其$value插入到数组中,但它并不是&#39 ;吨

function AddID($tab,$value){
    foreach($tab as $element){
        $element['id']=$value;
    }
    return $tab;
}

有人可以向我解释我做错了吗?

编辑:

输入:

$result1=$function1($search_string);
    $result_array1 = CreateArray($result1);
    $result_array1 = AddID($result_array1,"profile");

(CreateArray可以正常使用mysql获取数组)

输出:

array (size=3)
  0 => 
    array (size=22)
      0 => string 'email@quipu.ducul' (length=17)
      'Email' => string 'email@quipu.ducul' (length=17)
      1 => string 'innov24' (length=7)
      'NickName' => string 'innov24' (length=7)
      2 => string 'TCA-Innov24' (length=11)
      'Company' => string 'TCA-Innov24' (length=11)
      3 => string 'hahaha' (length=6)
      'LastName' => string 'hahaha' (length=6)
      4 => string 'pouet' (length=5)
      'FirstName' => string 'pouet' (length=5)
      5 => string 'Antarctica' (length=10)
      'Country' => string 'Antarctica' (length=10)
      6 => string 'Dans mon igloo' (length=14)
      'City' => string 'Dans mon igloo' (length=14)
      7 => string 'Journalist' (length=10)
      'Name' => string 'Journalist' (length=10)
      8 => string '1' (length=1)
      'ID' => string '1' (length=1)
      9 => string '290' (length=3)
      'AqbPoints' => string '290' (length=3)
      10 => string 'AQ' (length=2)
      'count' => string 'AQ' (length=2)

3 个答案:

答案 0 :(得分:0)

foreach($tab as $value) {
   $element[] = $value;
           ^^--shorthand for "array_push()"
}

答案 1 :(得分:0)

您需要$element上的pass by reference。文档的链接可以比我更清楚地解释它,但这里有一个引用:

  

您可以通过引用传递变量,以便函数可以   修改变量。

您的功能应如下所示:

function AddID($tab, $value){
    foreach($tab as &$element) { // Notice the &$element
        $element['id'] = $value;
    }

    return $tab;
}

以下是运行的代码:https://ideone.com/ax311G

如果您不想通过引用传递,则必须从现有数组创建一个新数组:

function AddID($tab, $value){
    $newArray = array();
    foreach($tab as $element){
        $element['id'] = $value;
        $newArray[] = $element; // Adds to new array
    }
    return $newArray;
}

答案 2 :(得分:0)

您需要通过引用或使用数组的键来修改它。您还需要确保$tab数组的每个元素也是一个数组,否则可以将其转换为数组。

以下是解决这两种情况的解决方案:

function AddID($tab,$value){
    foreach($tab as $k => $v) {
        if (is_array($v)) {
            $tab[$k]['id']=$value;
        } else {
            $tab[$k] = array($v, 'id' => $value);
        }
    }
    return $tab;
}