Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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 如果未找到数组\u搜索查询_Php_Database_Arrays_If Statement - Fatal编程技术网

Php 如果未找到数组\u搜索查询

Php 如果未找到数组\u搜索查询,php,database,arrays,if-statement,Php,Database,Arrays,If Statement,我最近在Stack上发布了这个问题,并得到了我问题的完美答案,我将其标记为正确。然而,我现在有一个相关的问题,我发现很难解决,但看起来应该很容易 我使用上一篇文章中提供的以下内容搜索了字符串“GB”和“US”的数组: /* Get Movie release dates */ $releases = $tmdb->getMovieReleases($tmdb_id); echo "<pre>"; print_r($releases); echo "</pre>";

我最近在Stack上发布了这个问题,并得到了我问题的完美答案,我将其标记为正确。然而,我现在有一个相关的问题,我发现很难解决,但看起来应该很容易

我使用上一篇文章中提供的以下内容搜索了字符串“GB”和“US”的数组:

/* Get Movie release dates */
$releases = $tmdb->getMovieReleases($tmdb_id);

echo "<pre>";
print_r($releases);
echo "</pre>";

$uk_release = -1;

foreach($releases['countries'] as $k=>$v) {
    if(array_search('GB', $v)) {
        $uk_release = $k;
        break;
    } else {
        $uk_release = null;
    }
}

$us_release = -1;

foreach($releases['countries'] as $k=>$v) {
    if(array_search('US', $v)) {
        $us_release = $k;
        break;
    } else {
        $us_release = null;
    }
}

$uk_rating = $releases['countries'][$uk_release]['certification'];
$us_rating = $releases['countries'][$us_release]['certification'];
我试图构造各种IF语句来检查两个查询中的一个是否为null、空、==“”等,但似乎什么都不起作用。目前,我正在尝试以下操作,基本上使用逻辑,如果两个结果都不等于零,则同时显示两个结果,或者如果其中一个结果为空,则仅显示不为空的结果(对格式设置表示歉意):

if($uk\u date!==”&&&$us\u date!==”){?>
发布日期

(英国)
(美国)

发布日期

(美国)

发布日期

(英国)

试一试


!==
运算符检查相等性和类型。在您的示例中,如果数组中不存在UK,则解释器会(标记警告并)将值
null
分配给
$UK_date
(即不是空字符串)

如果您将
!==
更改为
!=
,应该可以正常工作,但最佳做法通常也包括消除警告,因此应在阵列本身上进行完整性检查


另一个答案也解决了这个问题-它只是一个简写
(与条件if-else相反)。

感谢您的帮助,我如何检查数组本身?我是否必须附加一个else{}对搜索数组的if语句,如果是,我该怎么做?这是一个条件运算符,它是一个三元运算符。这非常有效,再加上里面的一个if语句,可以查看单个元素(如认证和发布日期)是否存在。谢谢!
Array
(
    [id] => 13655
    [countries] => Array
        (
            [0] => Array
                (
                    [iso_3166_1] => US
                    [certification] => G
                    [release_date] => 2008-06-20
                )

            [1] => Array
                (
                    [iso_3166_1] => CA
                    [certification] => 
                    [release_date] => 2008-06-20
                )

            [2] => Array
                (
                    [iso_3166_1] => JP
                    [certification] => 
                    [release_date] => 2008-08-01
                )

        )

)
if ($uk_date !== "" && $us_date !== "") {?>
                                <section class="span3">
                                    <p class="overview-title">RELEASE DATE</p>
                                    <p class="section_body">
                                        <?php echo $uk_date; ?> (UK)<br>
                                        <?php echo $us_date; ?> (US)
                                    </p>
                                </section><?php
                            } else if ($uk_date = "") {?>
                                <section class="span3">
                                    <p class="overview-title">RELEASE DATE</p>
                                    <p class="section_body">
                                        <?php echo $us_date; ?> (US)
                                    </p>
                                </section><?php
                            } else if ($uk_date == "") {?>
                                <section class="span3">
                                    <p class="overview-title">RELEASE DATE</p>
                                    <p class="section_body">
                                        <?php echo $uk_date; ?> (UK)
                                    </p>
                                </section><?php
                            }
$uk_rating = isset($releases['countries'][$uk_release]['certification'])?$releases['countries'][$uk_release]['certification']:'';
$us_rating = isset($releases['countries'][$us_release]['certification'])?$releases['countries'][$us_release]['certification']:'';
if(isset($releases['countries'][$uk_release])){
  // UK exists in array
} else {
  // does not
}