Asif patel
Asif patel

Reputation: 35

json encode for following array

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

Answers (6)

Kmg Kumar
Kmg Kumar

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

Zamir
Zamir

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

VinothRaja
VinothRaja

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

Crysis
Crysis

Reputation: 418

This works fine for me,

print_r(json_encode(array_filter($myArray)));

Upvotes: 0

JavidRathod
JavidRathod

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

MH2K9
MH2K9

Reputation: 12039

Simply array_filter is the easy way

$data = json_encode(array_filter($data, function ($item) { 
    return !!$item['dietary_options'];
}));

Upvotes: 1

Related Questions