1

我尝试使用以下代码检查数组是否存在,问题是当其中没有图像getFieldOrder('image_gal')时会返回此错误。

错误输出

Warning: array_reverse() [function.array-reverse]: The argument should be an array in /home/sritamac/public_html/wp-content/plugins/magic-fields/get-custom.php on line 306

Warning: sort() expects parameter 1 to be array, null given in /home/sritamac/public_html/wp-content/plugins/magic-fields/get-custom.php on line 307

数组代码:

<?php
//var
$images = getFieldOrder('image_gal');

if (is_array($images)) {

    foreach ($images as $image) {

        if (get('image_gal', 1, $image) == TRUE) { //check if image_gallery_image has image 
?> 

    <div id="wrap">
        <ul id="mycarousel" class="jcarousel-skin-tango">
            <?php
            $images = getFieldOrder('image_gal');
            foreach ($images as $image) { //loop image 
            ?>
            <li>
                <a class="group3"  href="<?php echo get('image_gal', 1, $image);?>">
                    <img src="<?php echo get('image_gal', 1, $image);?>" width="150" height="150" alt="" />
                </a>
            </li>  
            <?php
            }
            ?>  
        </ul>
    </div>
<?php
            break;
        }
    }
}
?>

我使用这个主题http://www.s5themes.com/theme/webfolio/和 wordpress 版本是 3.2.1。

魔法场插件http://magicfields.org/

4

1 回答 1

0

这个问题是因为,array_reverse()并且sort()您正在传递一个非数组的变量。

解决方案 :

  1. 检查你的参数,在执行这些函数之前,只有当参数是数组时才执行这些函数。你可以使用is_array 函数。

    if(is_array($array)){
        sort($array);
    }
    
  2. 检查您的参数,如果它为空或非数组,则使其成为数组。在将其传递给函数之前。

    if(!is_array($array) || $array = "" || $array = NULL){
        $array = array();
    }
    sort($array);
    

我向您推荐第二种解决方案,因为即使数组为空,它也不会影响其他功能。

于 2013-03-04T04:47:06.980 回答