在Array中搜索并查找字符串

时间:2015-11-22 04:25:36

标签: php arrays

大家好我有一个包含id和name的数组,我有一个带有coma saperated ids的字符串。 我想要的是,对于字符串中的每个id,在数组中找到名称并打印名称。

  $query=select name,id from table where something='match'
  $array1=mysqli_fetch_array($query);

现在我有另一个值为1,2,3,4,5....

的字符串

我想从数组中找到字符串中每个id的名称。

请给我一些建议,帮助我解决这个问题。

 var_dump($_SESSION['deps_array']);

   array(12) { [0]=> string(1) "2" ["did"]=> string(1) "2" [1]=> string(8) "Accounts" ["name"]=> string(8) "Accounts" [2]=> string(9) "photo.png" ["photo"]=> string(9) "photo.png" [3]=> string(0) "" ["dabout"]=> string(0) "" [4]=> string(0) "" ["fname"]=> string(0) "" [5]=> string(0) "" ["lname"]=> string(0) "" }





 $array=$_SESSION['deps_array'];
 $res = search('3,6', $array);
 echo "Result:".PHP_EOL;
 var_dump($res);

结果

 Warning: Illegal string offset 'did' in     /Applications/AMPPS/www/pros/site/test.php on line 12

 Warning: Illegal string offset 'did' in /Applications/AMPPS/www/pros/site/test.php on line 12

功能

function search($ids,$array) {
$ids=substr($ids,1);
$idArray = explode(",", $ids);
$result = Array();
foreach($idArray as $id)
{

   foreach ($array as $key => $val) {
       $iddd=$val['did'];
       if ( $iddd=== $id) {
           echo $val.','.$val;
       }
   }

  }
}

1 个答案:

答案 0 :(得分:0)

您可以使用以下此功能,例如search($ids, $array1);其中$ids变量包含您的值1,2,3,4,5, n

<强>功能

function search($ids, $array) {

   $idArray = explode(",", $ids);
   $result = Array();

   foreach($idArray as $id)
   {

       foreach ($array as $key => $val) {
           if ($val['id'] === $id) {
               array_push($result, $val['name']);//this line is updated
           }
       }

   }

   return $result;

}//end function

在函数内部,$ids变量转换为数组,外部foreach循环遍历每个id,并尝试在值中查找预期的id。如果找到,则将其推送到结果数组,最后从数组返回$result数组。这将仅返回匹配的值。

免责声明:我没有测试过该功能,但它应该可以正常工作。

<强>更新

考虑您的结果$array1与此数组相同:

$array = [    
    ['id'=>'1', 'Name'=>'Name 1'],
    ['id'=>'2', 'Name'=>'Name 2'],
    ['id'=>'3', 'Name'=>'Name 3'],
    ['id'=>'4', 'Name'=>'Name 4'],
    ['id'=>'5', 'Name'=>'Name 5'],
    ['id'=>'6', 'Name'=>'Name 6'],
    ['id'=>'7', 'Name'=>'Name 7'],
    ['id'=>'8', 'Name'=>'Name 8'],
    ['id'=>'9', 'Name'=>'Name 9'] ];

function search($ids, $array) {

   $idArray = explode(",", $ids);
   $result = Array();

   foreach($idArray as $id)
   {

       foreach ($array as $key => $val) {
           if ($val['id'] === $id) {
               echo "name:".$val['Name'];
               array_push($result, $val['Name']);
           }
       }

   }

   return $result;

}//end function

// test
$res = search('3,6', $array);

echo "Result:".PHP_EOL;
var_dump($res);

结果屏幕截图

enter image description here