0

I am trying to search a multi-dimensional associative array and change a value after searching. Here is what my array looks like

 $arr=Array ( [0] => Array ( [1] => 
    Array ( [keyword] => 2014 
            [count] => 97 
            [percent] => 4.91 )))

So what I am trying to do is to search for keyword and if found then increase the count on that particular index where keyword was found.

So I am trying to do something like:

if(in_array("2014", $arr))
{
//then add 100 to count that is 100+97

}

So what will be the best way to go about this.

Note: I am trying to search a value in the array and if found then update the value of count key on that particular index. The last part is as important as first.

Ahmar

3 Answers 3

1

you can use that code:

$arr = Array(
    0 => Array(
        1 => Array(
            'keyword' => 2014,
            'count' => 97,
            'percent' => 4.91
        )
    )
);

foreach ($arr as &$arr1) {

    foreach ($arr1 as &$arr2) {

        if (2014 == $arr2['keyword']) {
            $arr2['count'] += 100;
        }

    }
}

unset($arr2, $arr1);

Result:

array(1) {
  [0]=>
  array(1) {
    [1]=>
    array(3) {
      ["keyword"]=>
      int(2014)
      ["count"]=>
      int(197)
      ["percent"]=>
      float(4.91)
    }
  }
}
Sign up to request clarification or add additional context in comments.

Comments

1

iterate through the dimensions of the array and change value if you found the key

foreach ($arr as $key => $val) {
    foreach ($arr[$key] as $keyy => $val) {
        foreach ($arr[$key][$keyy] as $keyyy => $val) {
            if($arr[$key][$keyy]['keyword'] == 2014){
                $arr[$key][$keyy]['count'] = $arr[$key][$keyy]['count']+100;
                break;
            }
        }          
    }       
}

hope it helps ;D

Comments

0

Your array

$arr=array( "0" => array( "1" => 
    array( "keyword" => 2014 ,
            "count" => 97, 
            "percent" => 4.91 ),
  "2"=> array( "keyword" => 2015,
            "count" => 5, 
            "percent" => 4.91 )));

Code

foreach($arr as $key => &$val) {

    foreach($val as $mm => &$aa) {

        if("2014" == $aa['keyword']) {

            $aa["count"] =  $aa["count"]+ 100;
        }
    }
}

print_r($arr);

Sandbox url: http://sandbox.onlinephpfunctions.com/code/fc2fd3a5bd3593c88efdb50c4a57b0812a7512c9

2 Comments

why you use in_array in current array??
@Brotheyura yes you are correct. Not needed actually. +1 pointing out me the issue

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.