Reputation: 35
i have following array . i want to json_encode for this array Result like [{"dietary_options":"234"},{"dietary_options":"123"}]
using array method not for loop.
Array
(
[0] => Array
(
[dietary_options] =>
)
[1] => Array
(
[dietary_options] =>
)
[2] => Array
(
[dietary_options] =>
)
[3] => Array
(
[dietary_options] =>
)
[4] => Array
(
[dietary_options] =>234
)
[5] => Array
(
[dietary_options] => 123
)
)
Upvotes: 0
Views: 85
Reputation: 616
Try this code,
$data = array(array('dietary_options'=>''),
array('dietary_options'=>'one'),
array('dietary_options'=>'two'));
$data = array_map('array_filter', $data);
$data = array_values(array_filter($data));
print_r(json_encode($data,true));
// print_r(json_encode(array_filter($data),true));
Upvotes: 0
Reputation: 441
php array_filter good option.
$data = array(
array("dietary_options" => ''),
array("dietary_options" => ''),
array("dietary_options" => ''),
array("dietary_options" => 123),
array("dietary_options" => 234),
);
return new JsonResponse(array_values(array_filter($data, function($k){
return !!$k["dietary_options"];
})));
Upvotes: 0
Reputation: 1413
try this . It's working as your expecting format without loop.
$array=array(
array("dietary_options"=>"234"),
array("dietary_options"=>""),
array("dietary_options"=>""),
array("dietary_options"=>"123")
);
$array_data = array_map('array_filter', $array);
$array_data = array_filter($array_data);
$array_data = array_values($array_data);
print_r(json_encode($array_data));
Upvotes: 0
Reputation: 418
This works fine for me,
print_r(json_encode(array_filter($myArray)));
Upvotes: 0
Reputation: 483
please try below code.
$data = array(array("dietary_options"=>""),array("dietary_options"=>"789"),array("dietary_options"=>"123456"));
$data = array_filter(array_map('array_filter', $data));
echo json_encode(array_values($data));
Upvotes: 0
Reputation: 12039
Simply array_filter is the easy way
$data = json_encode(array_filter($data, function ($item) {
return !!$item['dietary_options'];
}));
Upvotes: 1