Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP搜索数组返回所有值_Php_Arrays - Fatal编程技术网

PHP搜索数组返回所有值

PHP搜索数组返回所有值,php,arrays,Php,Arrays,我有一个json文件,数据如下: [ { id: 40807, dl: true }, { id: 347984, dl: true }, { id: 431530, dl: true }, { id: 75674, dl: true }, { id: 262504, dl: true }, { id: 415842, dl: false } ] 我正

我有一个json文件,数据如下:

[
  {
    id: 40807,
    dl: true
  },
  {
    id: 347984,
    dl: true
  },
  {
    id: 431530,
    dl: true
  },
  {
    id: 75674,
    dl: true
  },
  {
    id: 262504,
    dl: true
  },
  {
    id: 415842,
    dl: false
  }
]
我正在使用json_解码将其转换为PHP

我想在数组中搜索id并返回dl是true还是false,但无法解决如何使用PHP实现这一点

谁能给我指出正确的方向吗

编辑:

我专门从API(电影数据库)中提取数据。API返回六部电影,其中包含传记、发行日期、ID等数据

我上面的json文件将包含我收藏的电影列表(我可能会添加合法拥有的)

我使用foreach循环来显示API中的电影。其中,我希望搜索从json文件中提取的数组,以显示该电影是否在我的收藏中

我有以下资料:

//pull json data from TMBD API
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$APIurl);
$result=curl_exec($ch);
curl_close($ch);

$obj = json_decode($result, true);


$json = file_get_contents('PHP/results.json');
$cMov = json_decode($json,true);


$i=1;
foreach($obj['results'] as $data) {

    //search $cMov for $data['id']. Here I want to show whether 'dl' is true or false
    if(array_search($data['id'], array_column($cMov, 'tmdbid'))) {
        $exists = '&nbsp; <i style="color: #28B463;">Movie Exists in json file</i>';
    } else {
        $exists = '&nbsp; <i style="color: #CB4335;">Movie not in json file</i>';
    }

if($data["original_language"] == 'en') {

    //display movie poster, etc. echo $exists

    if(++$i >= $limit) break;
}


}
//从TMBD API中提取json数据
$ch=curl_init();
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_URL,$apirl);
$result=curl\u exec($ch);
卷曲关闭($ch);
$obj=json_decode($result,true);
$json=file_get_contents('PHP/results.json');
$cMov=json_decode($json,true);
$i=1;
foreach($obj['results']作为$data){
//在$cMov中搜索$data['id']。这里我想显示'dl'是真还是假
if(数组搜索($data['id'],数组列($cMov,'tmdbid')){
$exists='电影存在于json文件中';
}否则{
$exists='电影不在json文件中';
}
如果($data[“原始语言”]=“en”){
//显示电影海报等。存在echo$
如果(++$i>=$limit)中断;
}
}
目前,该代码将显示我的json库中是否存在该ID。然而,我想返回'dl'的值,这也是我拥有的电影和我想要拥有的电影之间的区别


我希望这是有意义的

如果您有一个带有obj的数组,只需循环遍历它并检查“dl”是否为真:

// $array is your array as your wrote it
foreach ($array as $obj) {
  // $obj here is the "little" array you have with "id" and "dl"
  if ($obj['dl'] == true) {
    echo $obj; // eg. [id : xxx, dl : true]
    echo $obj['id']; // eg. xxx
  }
}
现在,当'dl'为真时,您可以仅使用值重建新数组,您可以添加一个新条件,如
if($obj['id']==“您想要的id”)

如果要在数组中查找具有特定“id”和“dl”true的值,可以使用
array\u filter()


我不确定您到底想要实现什么,这是您想要的吗?

最短的方法是使用
array\u column()
使用允许您为结果设置键的选项

$data = json_decode($json, true);
$out = array_column($data, "dl", "id");
echo $out[347984];
编辑

我已经用额外的位更新了代码

$data = json_decode($cMovJSON, true);
$cMov = array_column($data, "dl", "id");

foreach($obj['results'] as $data) {

    //search $cMov for $data['id']. Here I want to show whether 'dl' is true or false
    if(isset($cMov[$data['id']])) {
        $exists = '&nbsp; <i style="color: #28B463;">Movie Exists in json file</i>';
        if ( $cMov[$data['id']] )   {
            $exists.="True";  // Exists and true
        }
        else    {
            $exists.="False";// Exists but false
        }
    } else {
        $exists = '&nbsp; <i style="color: #CB4335;">Movie not in json file</i>';
    }

    if($data["original_language"] == 'en') {

        //display movie poster, etc. echo $exists

        if(++$i >= $limit) break;
    }

}
$data=json\u decode($cMovJSON,true);
$cMov=array_column($data,“dl”,“id”);
foreach($obj['results']作为$data){
//在$cMov中搜索$data['id']。这里我想显示'dl'是真还是假
如果(isset($cMov[$data['id']])){
$exists='电影存在于json文件中';
如果($cMov[$data['id']])){
$exists.=“True”;//exists和True
}
否则{
$exists.=“False”;//存在但为False
}
}否则{
$exists='电影不在json文件中';
}
如果($data[“原始语言”]=“en”){
//显示电影海报等。存在echo$
如果(++$i>=$limit)中断;
}
}

希望你能看到一些地方,在这些地方你可以把你需要的任何逻辑放到这段代码中。

我已经用更多信息更新了我的原始问题。谢谢你的帮助。我想我已经用你的after.Perfect更新了答案。谢谢你的帮助我已经用更多信息更新了我的原始问题。谢谢你的帮助