2013-02-25 3 views
-1

Допустим, что у нас есть динамически сгенерированный массив.Ключи массива ключей PHP

$arr[1]["a"] = "value"; 
    $arr[1]["b"] = "value"; 
    $arr[1]["c"] = "value"; 

    $arr[2]["a"] = "value"; 
    $arr[2]["b"] = "value"; 
    $arr[2]["c"] = "value"; 
    $arr[2]["d"] = "value"; 

    $arr[3]["a"] = "value"; 
    $arr[3]["g"] = "value"; 

Сформировать массив можно, поэтому не используйте этот пример, как основные линии. Как вы видите, есть разные ключи, но в конце концов мы должны получить:

$arr[1]['a'] = 'value'; 
$arr[1]['b'] = 'value'; 
$arr[1]['c'] = 'value'; 
$arr[1]['d'] = 'empty value'; 
$arr[1]['g'] = 'empty value'; 

$arr[2]['a'] = 'value'; 
$arr[2]['b'] = 'value'; 
$arr[2]['c'] = 'value'; 
$arr[2]['d'] = 'value'; 
$arr[2]['g'] = 'empty value'; 

$arr[3]['a'] = 'value'; 
$arr[3]['b'] = 'empty value'; 
$arr[3]['c'] = 'empty value'; 
$arr[3]['d'] = 'empty value'; 
$arr[3]['g'] = 'value'; 

непустого значение различно, поэтому array_merge не так, используя хорошую идею.

+2

В чем ваш вопрос? – Baba

+0

ok my bad, вопрос в том, как синхронизировать ключи массива, как вы видите в примере – sulest

+0

Что именно вы подразумеваете под 'sync', на самом деле не совсем понятно ..... – Baba

ответ

1

Я думаю, что вы хотите, чтобы это (это ужасно неэффективен, но мой мозг борется)

$keys = array(); 
foreach($arr as $array){ 
    $keys = array_merge($keys, array_keys($array)); 
} 
//$keys now has all unique keys 
foreach($arr as $array){ 
    foreach($keys as $key){ 
     if(!isset($array[$key])){$array[$key] = null} 
    } 
} 

Это непроверено, но я думаю, что это шо uld Работа

+0

действительно это выглядит как единственный способ. Я был просто любопытным, если есть какой-то сложный способ сделать это. tnx для вашего времени – sulest

0

Я думаю, вы хотите, чтобы заполнить массив со значениями по умолчанию ... Вы можете использовать array_fill сделать это

$keys = array("a","b","c","d","g"); 
$arr[1] = array_combine($keys,array_fill(0, 5, 'empty value')); 


$arr[1]["a"] = "value"; 
$arr[1]["b"] = "value"; 
$arr[1]["c"] = "value"; 


print_r($arr[1]); 

Выход

Array 
(
    [a] => value 
    [b] => value 
    [c] => value 
    [d] => empty value 
    [g] => empty value 
) 
+0

вы не знаете ключей в начале массив («a», «b», «c», «d», «g»); - nope нет информации о ключевых именах и о том, сколько они Это было причиной для примера. Я подготовлю один пример;) – sulest

+0

Тогда как вы получили '$ arr [1] ['d']' и '$ arr [1] ['g']' в конце – Baba

+0

Баба есть 2 примера на моем вопрос первый показывает, что у нас есть, и второе, что мы хотим , поскольку я был введен в вопрос , есть небольшой текст, но в конце мы должны получить: « , так как я получаю $ arr [1] ['d '] и $ arr [1] [' g '] угадайте, как. Пожалуйста, в следующий раз прочитайте перед голосованием или попросите спасибо за ваше время – sulest

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