2017-01-09 19 views
-3

在這裏的ID是陣列$catids = $_product->getCategoryIds();: -in_array返回false,即使我能看到陣列

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

如果我再檢查,如果133是在數組中,則返回false ...

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

這個語法有什麼問題嗎?

下面是用例,我想要做什麼......

(如果產品被分配到的類別編號133,然後渲染這個......)

<?php if (in_array($catids == 133)): ?> 
    <div class="collect-item"> 
     <span class="text"> 
      <?php echo $this->__('Click & Collect') ?> 
     </span> 
    </div> 
<?php endif; ?> 
+3

使用2個參數,而不是一個比較。 – alex

+0

謝謝,我可以看到我應該做什麼...... :) – zigojacko

回答

1

您使用in_array不正確。

in_array接受2個參數(請參閱php.net

您的代碼應閱讀

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

+0

我認爲這是第一個答案(但不是100%肯定),謝謝,我想我的原始問題的第一個評論後應該做什麼。正如你所回答的那樣。乾杯:) – zigojacko

0

你正在使用in_array功能錯誤的方式。

在PHP文檔,你可以找到此功能的描述:

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

在你的情況,你應該叫:

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

看看手冊爲如何使用[in_Array()][1]

您的使用應該類似於: in_array(133,$ catids)

0

嘗試:

in_array($catids, '133', true) 
0

in_array收到的第一個參數是要查找到數組的元素。在你的情況下,你正在比較一個數組與133.結果將是錯誤的,並將錯誤傳遞給in_array函數。

要解決您的問題,您有133第一個參數,$ catids調用in_array作爲第二個

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