2016-12-24 2 views
0

Я хочу, чтобы хранить свои переменные в массиве рядом с их ключами, как:Как хранить каждое значение массива с их ключами в PHP

filter : [ 
"0" : "test", 
"1" : "you", 
"2" : "php" 
] 

У меня есть filter[] массива, в первую очередь, и каждый раз с запросом на обновление I хотите добавить значение к этому массиву с помощью ключа, автоматизировать созданный ключ.

Я попытался это два метода, но они не хранения переменных ключей:

//$seat_filters = filter array fetched from db 

$filters = array($request->input('filter')); 

$filters_array = array_merge($seat_filters, $filters); 

Когда я проверяю результат $filters_array я получаю:

filter : [ 
"test", 
"you", 
"php" 
] 

То же самое происходит в методе ниже хранящиеся в массиве:

array_push($seat_filters ,$request->input('filter')); 

Только второй метод короче. FYI: Результаты получены в формате JSON.

+0

Если ключи массива являются числовыми и __ordered__ - JSON игнорирует их. –

+0

Кто проголосовал? Зачем ? –

+0

@u_mulder Когда я отключил один из этих элементов массивов, я получаю их ключи со своими значениями в json. почему это –

ответ

1

Хотя я не понимаю, для чего все это, но все же некоторые советы.

Так у вас есть массив, как:

$a = ["test","you","php"]; 
// though it's indexes are not visible - they exist 
$filter = []; 
// you can see indexes in this `foreach` 
foreach ($a as $k => $v) { 
    echo 'Key is ', $k, '; value is ', $v; 
    // now you can add both values to your filter 
    $filter[] = [$k, $v]; 
} 
print_r($filter); 
echo json_encode($filter); // [[0,"test"],[1,"you"],[2,"php"]] 
+0

Я также нашел решение для своей проблемы: я могу присвоить этим значениям специальные ключи, такие как: f1 или f2 ... –

+0

if ((array_search ($ request-> input ('filter'), $ seat_filters)) == false) { $ count = count ($ seat_filters); $ filters_array = array_merge ($ seat_filters, array ("f". $ Count ++ => $ request-> input ('filter'))); } –

1

Чтобы сохранить ключ в массиве:

$output = array_map(function($v, $k){return[$k, $v];}, $array); 
1

Попробуйте этот метод в PHP.

array_combine() 
+0

Я пробовал все еще не повезло. –

+0

Если возможно, используйте переменную array counts [], добавьте ее тоже. Затем используйте метод array_combine(). – Prasanna

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