1

I am deleting the data from array as per multiple index value and did it re-indexing but still I am getting the wrong format. My code is below:

$val = '[{"label":"","value":""},{"label":"Rs 100 to Rs 499","value":"162"},{"label":"Rs 500 to Rs
    999","value":"140"},{"label":"Rs 1000 to Rs 1999","value":"141"},{"label":"Rs 2000 to Rs
    2999","value":"142"},{"label":"Rs 3000 to Rs 3999","value":"143"},{"label":"Rs 4000 to Rs
    4999","value":"144"},{"label":"Rs 5000 to Rs 5999","value":"145"},{"label":"Rs 10000 Above","value":"146"},{"label":"Rs
    20000 Above","value":"147"},{"label":"Rs 30000 Above","value":"148"},{"label":"Rs 50000
    Above","value":"149"},{"label":"Rs 70000 Above","value":"150"},{"label":"Rs 80000 Above","value":"151"},{"label":"Rs
    100000 Above","value":"152"},{"label":"Rs 6000 to Rs 6999","value":"153"},{"label":"Rs 7000 to Rs
    7999","value":"154"},{"label":"Rs 8000 to Rs 8999","value":"155"},{"label":"Rs 9000 to Rs 9999","value":"156"}]';
$val = json_decode($val, true);

// Below are the index values to be deleted.
$keyArr = [0, 2, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18];

foreach ($keyArr as $i) {
    unset($val[$i]);
}
array_values($val);
echo json_encode($val);
exit;

Here I am getting the output like below.

{"1":{"label":"Rs 100 to Rs 499","value":"162"},"3":{"label":"Rs 1000 to Rs 1999","value":"141"},"4":{"label":"Rs 2000
    to Rs 2999","value":"142"},"5":{"label":"Rs 3000 to Rs 3999","value":"143"}}

But my expected result should come like below.

[{"label":"Rs 100 to Rs 499","value":"162"},{"label":"Rs 1000 to Rs 1999","value":"141"},{"label":"Rs 2000
    to Rs 2999","value":"142"},{"label":"Rs 3000 to Rs 3999","value":"143"}]

3 Answers 3

2

As i see you're not assigning array_value() output to your real variable (i.e. $val)

$val='[{"label":"","value":""},{"label":"Rs 100 to Rs 499","value":"162"},{"label":"Rs 500 to Rs
999","value":"140"},{"label":"Rs 1000 to Rs 1999","value":"141"},{"label":"Rs 2000 to Rs
2999","value":"142"},{"label":"Rs 3000 to Rs 3999","value":"143"},{"label":"Rs 4000 to Rs
4999","value":"144"},{"label":"Rs 5000 to Rs 5999","value":"145"},{"label":"Rs 10000 Above","value":"146"},{"label":"Rs
20000 Above","value":"147"},{"label":"Rs 30000 Above","value":"148"},{"label":"Rs 50000
Above","value":"149"},{"label":"Rs 70000 Above","value":"150"},{"label":"Rs 80000 Above","value":"151"},{"label":"Rs
100000 Above","value":"152"},{"label":"Rs 6000 to Rs 6999","value":"153"},{"label":"Rs 7000 to Rs
7999","value":"154"},{"label":"Rs 8000 to Rs 8999","value":"155"},{"label":"Rs 9000 to Rs 9999","value":"156"}]';
$val=json_decode($val,True);

//Below are the index values to be deleted.
$keyArr=[0,2,6,7,8,9,10,11,12,13,14,15,16,17,18];

foreach ($keyArr as $i) {
        unset($val[$i]);
}
$val= array_values($val);
echo json_encode($val);exit;
Sign up to request clarification or add additional context in comments.

Comments

1

The array_values method returns the new array so you need to assign it to a variable first.

foreach ($keyArr as $i) {
    unset($val[$i]);
}

$newArr = array_values($val);
echo json_encode($newArr);exit;

Comments

0

I want to answer alternative one using in_array to check not in deleted key and new variable to assign for that value only ...

$val='[{"label":"","value":""},{"label":"Rs 100 to Rs 499","value":"162"},{"label":"Rs 500 to Rs
999","value":"140"},{"label":"Rs 1000 to Rs 1999","value":"141"},{"label":"Rs 2000 to Rs
2999","value":"142"},{"label":"Rs 3000 to Rs 3999","value":"143"},{"label":"Rs 4000 to Rs
4999","value":"144"},{"label":"Rs 5000 to Rs 5999","value":"145"},{"label":"Rs 10000 Above","value":"146"},{"label":"Rs
20000 Above","value":"147"},{"label":"Rs 30000 Above","value":"148"},{"label":"Rs 50000
Above","value":"149"},{"label":"Rs 70000 Above","value":"150"},{"label":"Rs 80000 Above","value":"151"},{"label":"Rs
100000 Above","value":"152"},{"label":"Rs 6000 to Rs 6999","value":"153"},{"label":"Rs 7000 to Rs
7999","value":"154"},{"label":"Rs 8000 to Rs 8999","value":"155"},{"label":"Rs 9000 to Rs 9999","value":"156"}]';
$val=json_decode($val,True);

//Below are the index values to be deleted.
$keyArr=[0,2,6,7,8,9,10,11,12,13,14,15,16,17,18];
$need = [];
foreach ($val as $k=>$i) {
    if(in_array($k,$keyArr) == false) $need[] = $i;
}
echo json_encode($need);exit;

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.