检查数组中是否存在值(Laravel或Php)

Fun*_*end 15 php arrays laravel

我有这个数组:

$list_desings_ids = array('hc1wXBL7zCsdfMu','dhdsfHddfD','otheridshere');
Run Code Online (Sandbox Code Playgroud)

使用die()+ var_dumo()这个数组返回给我:

array:2 [?
  0 => "hc1wXBL7zCsdfMu"
  1 => "dhdsfHddfD"
  2 => "otheridshere"
]
Run Code Online (Sandbox Code Playgroud)

我想检查一下design_id是否在$ list_desings_ids数组中退出.

例如:

foreach($general_list_designs as $key_design=>$design) {
    #$desing->desing_id return me for example: hc1wXBL7zCsdfMu
    if(array_key_exists($design->design_id, $list_desings_ids))
    $final_designs[] = $design;
}
Run Code Online (Sandbox Code Playgroud)

但这对我不起作用,正确的方法是什么?

Has*_*aan 22

你可以用in_array它.

尝试

$design_id = 'hc1wXBL7zCsdfMu';
$list_desings_ids = array('hc1wXBL7zCsdfMu','dhdsfHddfD','otheridshere');

if(in_array($design_id, $list_desings_ids))
{
  echo "Yes, design_id: $design_id exits in array";

}
Run Code Online (Sandbox Code Playgroud)


Qaz*_*azi 16

相反,array_key_exists你只需键入in_array这将解决您的问题,因为如果您转储此数组

$list_desings_ids = array('hc1wXBL7zCsdfMu','dhdsfHddfD','otheridshere');
Run Code Online (Sandbox Code Playgroud)

输出将是,

array(
   0 => hc1wXBL7zCsdfMu,
   1 => dhdsfHddfD,
   2 => otheridshere
)
Run Code Online (Sandbox Code Playgroud)

所以你的代码array_key_exists不起作用,因为这里0,1,2存在键,所以,你想要检查值,所以对于值,只需这样做in_array它将在你提到/创建的数组中搜索你想要的值


par*_*oid 5

您的数组没有key。
尝试这个

foreach($general_list_designs as $key_design=>$design) {
       #$desing->desing_id return me for example: hc1wXBL7zCsdfMu
       if(in_array($design->design_id, $list_desings_ids))
       $final_designs[] = $design;
 }
Run Code Online (Sandbox Code Playgroud)


Pra*_*iya 5

您只需要更改您的条件,然后用该代码替换即可

if(in_array($design->design_id, $list_desings_ids))
Run Code Online (Sandbox Code Playgroud)