in_array返回false,即使我可以在数组中看到id

时间:2017-01-09 14:19:45

标签: php arrays

以下是from loc in fdc.tblStoragelocations join _on1 in fdc.tblStoragedisks on loc.online1 equals _on1.id into on1 from _on2 in fdc.tblStoragedisks on loc.online2 equals _on2.id into on2 的数组: -

$catids = $_product->getCategoryIds();

如果我然后检查数组中是否有133,则返回false ...

array(3) {
  [0]=>
  string(1) "2"
  [1]=>
  string(2) "94"
  [2]=>
  string(3) "133"
}

这种语法有问题吗?

以下是我想要做的用例...

(如果产品被分配到类别ID 133,则渲染此...)

if (in_array($catids == 133)) {
    echo 'true';
} else {
    echo 'false';
}

5 个答案:

答案 0 :(得分:1)

您正在错误地使用in_array。

in_array接受2个参数(请参阅php.net

您的代码应该是

if in_array ( '133' , $catids) { //code here }

答案 1 :(得分:0)

您正在以错误的方式使用in_array功能。

在PHP文档中,您可以找到此函数的说明:

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

在您的情况下,您应该致电:

if(in_array('133', $catids)) 

答案 2 :(得分:0)

查看手册,了解如何使用[in_Array()][1]

您的用法应该是这样的:     in_array(133,$ catids)

答案 3 :(得分:0)

尝试:

in_array($catids, '133', true)

答案 4 :(得分:0)

in_array接收您要在数组中找到的元素作为第一个参数。在这种情况下,您将数组与133进行比较。结果将为false,false将传递给in_array函数。

要解决您的问题,您必须调用in_array,其中133作为第一个参数,$ catids作为第二个参数

<?php if (in_array(133,$catids)): ?>