【发布时间】:2015-07-13 02:14:48
【问题描述】:
我有这个数组(在下面的代码中从点 [A] 打印):
Array
(
[codigo] =>
[titulo] => Array
(
[0] => musi
[1] => bach
)
[titulo_operador] => OR
[resumo] =>
[autor] =>
[ano_min] =>
[ano_max] =>
[tipo] =>
[categoria] =>
[palavra_chave] =>
[idioma] =>
)
我在其中执行这些操作...(代码故意未优化,可能更精简)
if (!empty($data['titulo'])) {
if (is_array($data['titulo'])) {
$query .= " AND (";
//print_r($data); point [A]
foreach ($data['titulo'] as $value) {
$query_temp .= " ".$data['titulo_operador']." aid.name LIKE '%".$value."%'";
}
//print_r($data); point [B]
$query_temp = trim($query_temp, " ".$data['titulo_operador']." ");
$query .= $query_temp;
unset($query_temp);
$query .= ")";
} elseif (is_string($data['titulo'])) {
$query .= " AND aid.name LIKE '%".$data['titulo']."%'";
}
}
在 foreach 之后,$data['idioma'] 设置为 'bach'。这是 [B] 点中的 print_r:
Array
(
[codigo] =>
[titulo] => Array
(
[0] => musi
[1] => bach
)
[titulo_operador] => OR
[resumo] =>
[autor] =>
[ano_min] =>
[ano_max] =>
[tipo] =>
[categoria] =>
[palavra_chave] =>
[idioma] => bach
)
我已经删除了 $query_temp 语句,在那里留下了一个空的 foreach 并且这仍然会发生,所以我很确定那里的 foreach 中有一些东西......子数组中的 foreach 是否也改变了父数组中的任何东西?
编辑:我将其他元素分配给 $data['titulo'] 并且 $data['idioma'] 总是获取最后一个元素的值。
【问题讨论】:
-
这似乎不太可能是 PHP 错误。您可以在例如复制问题吗? http://3v4l.org/ ?
-
感谢您的提醒。在复制我的代码时,这个问题确实没有发生。这让我意识到问题出在其他地方。
标签: php arrays multidimensional-array foreach sub-array