ds000001 2019-05-31 09:15
浏览 113
已采纳

使用“array_search”时没有获得第一个值

Here, I have two multi-dimensional array. As I want to find the value from first array if the value is there in second array or not.

First array:

$abc = array(
    array("fld_channel_selected_item_track_id" => 627905217),
    array("fld_channel_selected_item_track_id" => 616557954)
);

Second array:

$pqr = array(
    array(
        "fld_channel_item_track" => 627905217,
        "fld_channel_item_title" => "Tropical Fantasy"
    ),
    array(
        "fld_channel_item_track" => 616557954,
        "fld_channel_item_title" => "Bday Boys"
    )
);

So, I am searching if the first array value is there in second array value or not:

for($i = 0;$i < count($abc); $i++)
{   
    $pos = array_search($abc[$i]["fld_channel_selected_item_track_id"], array_column($pqr, 'fld_channel_item_track'));
    if($pos) 
    {   
        echo "<pre>";print_r($pqr[$pos]);
    }
}
exit;

The outout is:

<pre>Array
(
    [fld_channel_item_track] => 616557954
    [fld_channel_item_title] => Bday Boys
)

Here, I am not getting the first value in my output.

Where I am wrong in that?

  • 写回答

3条回答 默认 最新

  • douzhanlai4671 2019-05-31 09:26
    关注

    The problem is array_search (doc) return index -> in your case index 0 so if ($pos) fails...

    Returns the key for needle if it is found in the array, FALSE otherwise.

    Need to compare result to FALSE

    By the way, this will be better way t achieve what you need:

    $a = array_column($abc, 'fld_channel_selected_item_track_id');
    $b = array_column($pqr, "fld_channel_item_title", "fld_channel_item_track");
    foreach($a as $searchId)
        if (isset($b[$searchId])) echo $b[$searchId] . PHP_EOL; 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 虚心请教几个问题,小生先有礼了
  • ¥30 截图中的mathematics程序转换成matlab