in_array()期望参数2是数组,Classipress中给出的字符串

时间:2014-05-02 22:08:00

标签: php arrays wordpress

我使用Classipress theme进行wordpress,并且我试图在我的类别中粘贴我的精选广告。

我找到了一个返回此错误的代码:

Warning: in_array() expects parameter 2 to be array, string given in loop-ad_listing.php on line 26

要使用粘贴顶部代码,我必须编辑两个页面并插入两个代码,然后我会发布错误部分:

首先:loop-ad_listing.php

代码1:

global $postisfeatured;
global $featurePostArray;

if ($postisfeatured == "1") 
    array_push($featurePostArray, $post->ID);

if (in_array($post, "ID", $featurePostArray) && $postisfeatured != "1") 
    echo '<div class="hide">';

代码2:

if ($postisfeatured != "1") {
    appthemes_after_endwhile();
    $postisfeatured = "";
}

该行:if (in_array($post,"ID",$featurePostArray) && $postisfeatured != "1") { 是错误。

4 个答案:

答案 0 :(得分:4)

in_array的签名如下:

  in_array($needle, $haystack, $strict = FALSE);

其中:

needle是您正在搜索的字符串,整数,资源等。

haystack是您正在搜索的数组

strict(可选)如果(或不匹配)匹配的项目应该相同(===

答案 1 :(得分:2)

您没有使用in_array函数,因为它应该被使用。

在第二个参数中,您放置了一个字符串(即"ID"),这是错误的;你应该在那个位置放置你想要搜索的数组。

结果应该是这样的:

$valueToSearch = "a";
$arrayToSearch = array("a", "b", "c");
echo in_array($valueToSearch, $arrayToSearch);

Please refer to the documentation

答案 2 :(得分:0)

您使用了&#34; ID&#34;作为第二个参数,它是一个字符串。请尝试以下方法:

if ( is_array($featurePostArray) && in_array($post->ID, $featurePostArray) ) {
    //some action
}

答案 3 :(得分:0)

我想我解决了这个问题。我的表单字段select multiple中有类似的情况,它会自动创建非简单变量但是数组类型变量(PHP弱变量类型)。所以当我在代码中首先声明值时:

  1. $lang='';
  2. 然后$lang=$_POST['lang'];
  3. <select id="lang" name="lang[]" multiple size="3"> <option value="en"<?php if(in_array('en',$lang)) echo ' selected';?>>English</option> <option value="fr"<?php if(in_array('fr',$lang)) echo ' selected';?>>French</option> <option value="pl"<?php if(in_array('pl',$lang)) echo ' selected';?>>Polish</option> </select><br>
  4. 然后我尝试运行脚本并选择没有我知道错误的选项&#34; in_array()期望参数2 ...&#34;
  5. 解决方案设置(第1点)以清空数组$lang=array();