Хорошо, не совсем уверен, как это сделать. У меня есть значения, которые выводятся из запроса SQL, например, так:
$row[0] = array('lid' => 1, 'llayout' => 1, 'lposition' => 1, 'mid' => 1, 'mlayout' => 1, 'mposition' => 0);
$row[1] = array('lid' => 2, 'llayout' => 1, 'lposition' => 0, 'mid' => 2, 'mlayout' => 1, 'mposition' => 0);
$row[2] = array('lid' => 2, 'llayout' => 1, 'lposition' => 0, 'mid' => 3, 'mlayout' => 1, 'mposition' => 1);
$row[3] = array('lid' => 3, 'llayout' => 1, 'lposition' => 1, 'mid' => 4, 'mlayout' => 1, 'mposition' => 1);
$row[4] = array('lid' => 4, 'llayout' => 1, 'lposition' => 2, 'mid' => 5, 'mlayout' => 1, 'mposition' => 0);
и т.д.. и т.д.
Хорошо, так что самое лучшее, что я могу придумать для этого, это дать ключам lid и mid массива, чтобы они равнялись расположению в массиве в цикле while запроса, например ...
$old[$row['lid']][$row['mid']] = $mposition;
Теперь, если я сделаю это, мне нужно сравнить ключи этого массива с другим массивом, который мне нужно будет построить на основе массива $ _POST [].
$new = array();
foreach($_POST as $id => $data)
{
// $id = column, but we still need to get each rows position...
$id = str_replace('col_', '', $id);
// now get the inner array...
foreach($data as $pos => $idpos)
$new[$id][$idpos] = $pos;
}
Хорошо, теперь у меня есть 2 массива информации, 1 из базы данных ($ old) и еще один из позиций $ _POST ($ new), я надеюсь, что ключи массива верны.
Теперь мне нужно выяснить, кто из них изменился, сравнивая старое с новым. А также, необходимо обновить базу данных всеми новыми позициями, где новая крышка = старая крышка, а новая середина = старая середина из каждого массива. Я уверен, что мне придется как-то использовать array_key или array_key_intersect, но не уверен, как именно ... ???
Кроме того, я не думаю, что UPDATE был бы полезен в цикле foreach, возможно, есть способ сделать оператор CASE в запросе UPDATE?
Кроме того, я поступаю правильно? ИЛИ я должен сделать это другим способом вместо использования многомерного массива для этого.
В основном мне нужно обновить базу данных, где каждый массив в пределах одного и того же ключа = измененное значение, и мне нужно обновить его, где mid = mid в базе данных (второе значение ключа).
Кроме того, я думаю, что это будет примерно так:
$newest = array();
foreach($old as $c => $d)
{
foreach($d as $e => $f)
$newest[$c][$e] = $new[$c][$e];
}
Но разве нет лучшего способа сделать это с 1 или 2 php функциями массива? И мне еще нужно знать, какие значения изменились .... arggg