当我向此函数发送数组和值时,我希望将新密钥(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)
答案 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;
}