PHP Tuş adı dizi

3 Cevap php

Ben bir dizi $ veri var

 fruit => apple,
 seat => sofa,

vs her anahtar type_key [0] ['değer'] olur böylece döngü istediğiniz kadar örneğin

 type_fruit[0]['value'] => apple,
 type_seat[0]['value'] => sofa,

ve ne düşündüm yani, bu yapardı

foreach ($data as $key => $value)
{
        # Create a new, renamed, key. 
        $array[str_replace("/(.+)/", "type_$1[0]['value']", $key)] = $value;

        # Destroy the old key/value pair
        unset($array[$key]);

}

print_r($array);

Çalışmıyor. Onu nasıl iş yapabilirim?

Ayrıca, her şey küçük harfle için tuşları (değil değerleri) olmak istiyorum: bu çok yapmanın kolay bir yolu var mı? Teşekkürler.

3 Cevap

Eğer ayrı ayrı diziler halinde anahtarları yapmak istiyor demek? Yoksa sadece aynı dizide tuşlarını değiştirmek demek mi?

    $array = array();
    foreach ($data as $key => $value)
    {
        $array['type_' . strtolower($key)] = array(array('value' => $value));
    }

Eğer anahtarlar ayrı değişkenler olmak istiyorsanız, o zaman bunu:

    extract($array);

Şimdi $ type_fruit ve $ type_sofa olacaktır. Biz orada bir ekstra iç içe dizi koymak beri, $ type_fruit [0] ['değer'] gibi değerleri bulabilirsiniz.

Sizin gereksinimleri ses ... şüpheli. Belki aşağıdaki gibi bir şey geliyordu:

$arr = array('fruit' => 'apple', 'seat' => 'sofa');
$newarr = array();

foreach ($arr as $key => $value)
{
  $newkey = strtolower("type_$key");
  $newarr[$newkey] = array(array('value' => $value));
}

var_dump($newarr);

ilk olarak

$array[str_replace("/(.+)/", "type_$1[0]['value']", $key)] = $value;

olmalıdır

$array[str_replace("/(.+)/", type_$1[0]['value'], $key)] = $value;