我有这个数组(在下面的代码中从点 [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'] 总是获取最后一个元素的值。