У меня есть массив, созданный из json
$fullResult = json_decode('[{"qid":"1", "result":"helo"}, {"qid":"2", "result":"ad"}, {"qid":"3", "result":"testing"}, {"qid":"4", "result":"dd"}]');
function filterArray($value){
global $id;
return ($value->qid > $id);
}
$filteredResult = array_filter($fullResult, 'filterArray');
$id - это 2
Когда я echo json_encode($fullResult);
Результат
[ {"qid": "1", "result": "helo"},
{"qid": "2", "result": "ad"},
{"qid": "3", "result": "testing"},
{"qid": "4", "result": "dd"} ]
Однако, когда я echo json_encode($filteredResult);, результат, как показано ниже (например, с дополнительным index.
{ "2":{"qid":"3","result":"testing"},
"3":{"qid":"4","result":"dd"} }
Я хочу, чтобы это было как показано ниже
[ {"qid":"3","result":"testing"},
{"qid":"4","result":"dd"} ]
Как я мог этого добиться?






array_filter сохранит ключ. Если вы хотите сделать его простым массивом, вы можете использовать array_values
$filteredResult = array_values(array_filter($fullResult, 'filterArray'));
echo json_encode($filteredResult);
Это приведет к:
[{"qid":"3","result":"testing"},{"qid":"4","result":"dd"}]
Док: array_values
Вместо
echo json_encode($filteredResult);
попробуйте что-нибудь вроде,
echo json_encode(array_values($filteredResult));
array_values устранит нежелательные индексы.
Спасибо!. Два тоже правильное значение, я голосую за обоих, пока не уверен, кому поставить галочку.
Я выбираю это как ответ, поскольку вы ответили первым. Спасибо!!
Вы также можете установить его по циклу.
$singleArray = array();
foreach ($filteredResult as $key => $value){
$singleArray[] = $value;
}
echo json_encode($singleArray);exit;
Спасибо!. Два тоже правильное значение, я голосую за обоих, пока не уверен, кому поставить галочку.