Bogdan Webb Bogdan Webb - 25 days ago 13
PHP Question

PHP - Searching in multidimensional array

i'm in a lot of brain-pain, please advise. I have the following situation:


  • i have the next multidimensional array:

    $numbers = array (
    "one_digit" => array (1,2,3,4,5),
    "two_digits" => array (20,21,22,23,24,25),
    "three_digits" => array (301,302,303,304,304),
    "mixed_digits" => array (9,29,309,1)
    );

  • i need a way to search in the $numbers array for the following:

    -- search if number 20 is in any $numbers array and echo where it is found
    ex. $find1 = m_array_search("20", $numbers); echo "i've found the searched value in ".$find1." subarray of $numbers";
    result: "i've found the searched value in two_digits subarray of $numbers"

    -- search if number 1 is in any $numbers array and echo where it is found
    ex. $find2 = m_array_search("1", $numbers); echo "i've found the searched value in ".$find2." subarray of $numbers";
    result: "i've found the searched value in two_digits,mixed_digits subarray of $numbers"



thus function must be able to spot presence in one or many "subarrays". sorry if i've missued the term "subarray"

THANK YOU!!!

Answer

You can try this with array_search() in a loop -

$numbers = array (
    "one_digit" => array (1,2,3,4,5),
    "two_digits" => array (20,21,22,23,24,25),
    "three_digits" => array (301,302,303,304,304),
    "mixed_digits" => array (9,29,309,1)
);

function search_value($array, $value)
{
  $result = array();
  foreach($array as $key => $sub) {
    // check if element present in sub array
    if(array_search($value, $sub) !== false) {
      // store the key
      $result[] = $key;
    }
  }
  return $result;
}

var_dump(search_value($numbers, 1));
var_dump(search_value($numbers, 5));

Output

array(2) {
  [0]=>
  string(9) "one_digit"
  [1]=>
  string(12) "mixed_digits"
}
array(1) {
  [0]=>
  string(9) "one_digit"
}
Comments