Hi I am trying to array_search for associative array in Php but the function isnot working as expected. can anyone help me with this. currently using php version 5.4
<?php
$mainArray = array("array1","array2","array3");
$array1 = array("item"=>"apple","price"=>2);
$array2 = array("item"=>"banana","price"=>3);
$array3 = array("item"=>"carrot","price"=>4);
echo phpversion();
echo "this line ".array_search("apple", array_column($mainArray,'item'));
echo "end";
?>
Problem: In your code $mainArray = array("array1","array2","array3");
you are declaring array of strings not array of arrays.
Change this:
$mainArray = array("array1","array2","array3");
This:
$mainArray = array($array1, $array2, $array3);
And use this $mainArray = array($array1, $array2, $array3)
after definition of $array1
, $array2
, $array3
PHP code: Try this code snippet here
<?php
ini_set('display_errors', 1);
$array1 = array("item" => "apple", "price" => 2);
$array2 = array("item" => "banana", "price" => 3);
$array3 = array("item" => "carrot", "price" => 4);
//should be declared like this and should be after defintion of $array1, $array2, $array3
$mainArray = array($array1, $array2, $array3);
echo "this line " . array_search("apple", array_column($mainArray, 'item'));
?>
If you need more short snippet, change
echo "this line ".array_search("apple", array_column($mainArray,'item'));
TO
echo "this line ".array_search("banana",
array_column(array_combine($mainArray, [$array1,$array2,$array3]),'item'));
What I am doing is, combining values of $mainArray with all related arrays to it.
array_combine Creates an array by using one array for keys and another for its values.
Here is working demo.