Ben iki dizi, kimlikleri ile bir ve İsimler ile bir tane var:
$ids = array(4, 13, 6, 8, 10);
$names = array('alice', 'bob', 'charles', 'david', 'elizabeth');
Ben kimlikleri ile satırlar dizideki adları böylece db güncellemeniz gerekir. Burada zor biraz: Ben de iki İnts var:
$special_name = 2; // the index in $names, in this case we mean 'charles'
$special_id = 13; // the id value
Ben isim dışında hangi kimliği, gider hangi umurumda değil $special_name
$special_id
üzerine gitmeli ile isim.
Oraya en zarif yolu nedir? Ben düşünüyorum yöntemlerin tümü oldukça dağınık görünüyor. Ben düşündüm en iyi her diziden özel öğeleri ayıklamak, ve bu ilk yapmak ve sonra belki de bu gibi yeni bir dizi bina, gerisini yapmak için:
$mapped = new array();
$mapped[$special_id] = $names[$special_name];
foreach ($ids as $id) {
if ($id != $special_id) {
$mapped[$id] = current($names);
}
// advance $names pointer
$next_name = next($names);
if ($next_name == $special_name) next($names);
}
Ben henüz (üzereyim) test değil ama böyle bir şey üretmek için bir anlamı:
$mapped = array(13=>'charles', 4=>'alice',6=>'bob', 8=>'david', 10=>'elizabeth');
ve daha sonra asıl güncelleme yapmak için bu geçiyor. Daha iyi bir fikrin var mı?
GÜNCELLEME: Yukarıdaki olası bir çözüm eklendi. Bu arada bir kaç cevapları içeri geldi