2015-01-09 6 views
1
array(22) { 
    [0]=> 
    array(5) { 
    ["name"]=> 
    string(33) "White shirt - blue logo" 
    ["price"]=> 
    string(5) "10.00" 
    ["img"]=> 
    string(5) "2.jpg" 
    ["text"]=> 
    string(865) "Lorem ipsum dolor sit amet, consectetur adipiscing elit." 
    ["url"]=> 
    string(26) "voltarity-white-red-shirt2" 
    } 
another array... 
another array... 
} 

Поэтому я хотел бы изменить свой массив [0] на мое значение в ["url"], возможно ли это? Кстати, этот массив создается из базы данных mysql.Как заменить ключ массива на значение в другом ключе?

ответ

1

Просто создайте новый ассоциативный массив, используя «url» в качестве ключа.

$newArray = []; 
foreach ($oldArray as $row) { 
    $newArray[$row['url']] = $row; 
} 

Очевидно, что если у вас есть 2 строки с тем же значением «URL» вторая строка будет перезаписывать первую строку. Если вам нужно разрешить нескольким строкам иметь одинаковое значение для «url», вы можете использовать этот цикл.

$newArray = []; 
foreach ($oldArray as $row) { 
    if (isset($newArray[$row['url']]) { 
     if (is_array($newArray[$row['url']])) { 
      $newArray[$row['url']][] = $row; 
     } else { 
      $newArray[$row['url']] = array($newArray[$row['url']], $row); 
     } 
    } else { 
     $newArray[$row['url']] = $row; 
    } 
} 
+1

Вы можете расширить это так, что переписывает не будет: '$ newArray [$ строки [ 'URL']] [] = $ row' - но вы также должны быть готовы иметь дело с этим MultiDim массива , –

Смежные вопросы