Yani, ilgili olmayan nedenlerle, kendi içinde bir Imploded alan vardır, bir dizi var. Şimdi, bu alanda dize patlayan ve patlamanın sonuçları ile bu alan yerine ilgileniyorum. Ben tür-sorta burada çalışan bir çözüm var, ama aksak görünüyor, ve ben daha verimli bir şey ilgileniyorum. Ya da en azından estetik.
Örnek bir dizi:
$items = array(
'name' => 'shirt',
'kind' => 'blue|long|L',
'price' => 10,
'amount' => 5);
Ve hedef 'color', 'lenght', 'size'
alanları ile 'kind'
alanını değiştirmektir.
Şimdiye kadar var:
$attribs = array('color', 'lenght', 'size'); // future indices
$temp = explode("|", $items['kind']); // exploding the field
foreach ($items as $key => $value) { // iterating through old array
if ($key == 'kind') {
foreach ($temp as $k => $v) { // iterating through exploded array
$new_items[$attribs[$k]] = $v; // assigning new array, exploded values
}
}
else $new_items[$key] = $value; // assigning new array, untouched values
}
Bu should (ezbere yazıyorum, benim kendi koduna erişim yok, ve ben sadece yazdım birini doğrulamak değil ... böylece herhangi bir hata varsa özür dilerim) yeni bir dizi neden, bu gibi bir şey görünüyor:
$new_items = array(
'name' => 'shirt',
'color' => 'blue',
'lenght' => 'long',
'size' => 'L',
'price' => 10,
'amount' => 5);
Ben, örneğin, sadece $items
dizisi ve unset($items['kind'])
bu değerleri eklemek olabilir, ama bu ayarsız sırasını atmak istiyorsunuz, ve ben biraz sonraki {[(2 için ihtiyaç )]} döngüler.
Yani, bunu yapmak için kolay bir yolu var mı?
EDIT: (Reply to Visage and Ignacio - since reply messes the code up) If I call one in a foreach loop, it calls them in a specific order. If I just append, I mess with the order I need for a table display. I'd have to complicate the display code, which relies on a set way I get the initial data. Currently, I display data with (or equivalent):
foreach($new_items as $v) echo "<td>$v</td>\n";
Ben sadece append, ben böyle bir şey yapmak zorunda olurdu:
echo "<td>$new_items['name']</td>\n";
foreach ($attribs as $v) echo "<td>$new_items[$v]</td>\n";
echo "<td>$new_items['price']</td>\n";
echo "<td>$new_items['amount']</td>\n";