How to search multiple values in array php?

I need to get the keys from values that are duplicates. I tried to use array_search and that worked fine, BUT I only got the first value as a hit.

I need to get both keys from the duplicate values, in this case 0 and 2. The search result output as an array would be good.

Is there a PHP function to do this or do I need to write some multiple loops to do it?

$list[0][0] = "2009-09-09";
$list[0][1] = "2009-05-05";
$list[0][2] = "2009-09-09";
$list[1][0] = "first-paid";
$list[1][1] = "1";
$list[1][2] = "last-unpaid";

echo array_search("2009-09-09",$list[0]);

kenorb

144k76 gold badges654 silver badges710 bronze badges

asked Jul 31, 2009 at 13:42

Jens TörnellJens Törnell

21.4k43 gold badges115 silver badges187 bronze badges

You want array_keys with the search value

array_keys($list[0], "2009-09-09");

which will return an array of the keys with the specified value, in your case [0, 2]. If you want to find the duplicates as well, you can first make a pass with array_unique, then iterate over that array using array_keys on the original; anything which returns an array of length > 1 is a duplicate, and the result is the keys in which the duplicates are stored. Something like...

$uniqueKeys = array_unique($list[0])

foreach ($uniqueKeys as $uniqueKey)
{
  $v = array_keys($list[0], $uniqueKey);

  if (count($v) > 1)
  {
    foreach ($v as $key)
    {
      // Work with $list[0][$key]
    }

  }
}

answered Jul 31, 2009 at 13:46

How to search multiple values in array php?

Adam WrightAdam Wright

48.5k12 gold badges129 silver badges152 bronze badges

2

In array_search() we can read:

If needle is found in haystack more than once, the first matching key is returned. To return the keys for all matching values, use array_keys() with the optional search_value parameter instead.

kenorb

144k76 gold badges654 silver badges710 bronze badges

answered Jul 31, 2009 at 13:46

1

The following combination of function calls will give you all duplicate values:

$a = array(1, 1, 2, 3, 4, 5, 99, 2, 5, 2);

$unique     = array_unique($a); // preserves keys
$diffkeys   = array_diff_key($a, $unique);
$duplicates = array_unique($diffkeys);

echo 'Duplicates: ' . join(' ', $duplicates) . "\n"; // 1 2 5

answered Jul 31, 2009 at 14:31

Till TheisTill Theis

1,23811 silver badges15 bronze badges

You can achieve that using array_search() by using while loop and the following workaround:

while (($key = array_search("2009-09-09", $list[0])) !== FALSE) {
  print($key);
  unset($list[0][$key]);
}

Source: cue at openxbox at php.net

For one-multidimensional array, you may use the following function to achieve that (as alternative to array_keys()):

function array_isearch($str, $array){
  $found = array();
  foreach ($array as $k => $v) {
    if (strtolower($v) == strtolower($str)) {
      $found[] = $k;
    }
  }
  return $found;
}

Source: robertark, php.net

answered Nov 8, 2015 at 19:07

kenorbkenorb

144k76 gold badges654 silver badges710 bronze badges

0

$userdb=Array
(
    (0) => Array
        (
            (uid) => '100',
            (name) => 'Sandra Shush',
            (url) => 'urlof100'
        ),
);

$key = array_search(100, array_column($userdb, 'uid'));

How to search multiple values in array php?

Sven Eberth

2,97312 gold badges22 silver badges27 bronze badges

answered Jun 19, 2021 at 11:10

How to search multiple values in array php?

1

How do you search multiple values in an array?

To check if multiple values exist in an array: Use the every() method to iterate over the array of values. On each iteration, use the indexOf method to check if the value is contained in the other array. If all values exist in the array, the every method will return true .

How do I check if an array contains multiple values in PHP?

php check if any of multiple values in array.
function in_array_any($needles, $haystack) {.
return ! empty(array_intersect($needles, $haystack));.
echo in_array_any( [3,9], [5,8,3,1,2] ); // true, since 3 is present..
echo in_array_any( [4,9], [5,8,3,1,2] ); // false, neither 4 nor 9 is present..

What is Array_keys () used for in PHP?

The array_keys() function returns an array containing the keys.

How can I get common values from two arrays in PHP?

The array_intersect() function compares the values of two (or more) arrays, and returns the matches. This function compares the values of two or more arrays, and return an array that contains the entries from array1 that are present in array2, array3, etc.