Wordpress + PHP:在另一个函数中使用带有in_array的数组变量

时间:2012-02-22 20:56:46

标签: php arrays wordpress

我正在使用jcart http://conceptlogic.com/jcart/在wordpress中创建一些购物车功能。

我正在尝试访问functions.php文件中另一个函数中的jcart函数。

foreach($jcart->get_contents() as $item) {
    $psitems[] = $item['id'];
}

此代码在functions.php本身或任何模板页面上运行良好 - 它创建$psitems数组,以便检查该数组是否包含某些值。

现在,在以下功能中:

function gallery_shortcode_fancybox($attr) { ...

我有以下内容:

foreach($jcart->get_contents() as $item) {
    $psitems[] = $item['id'];
}

foreach ( $attachments as $id => $attachment ) {
    $link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_image($id, 'full', false, false) : wp_get_attachment_image($id, 'full', true, false);

    $output .= "<div class='property'>";
    $output .= "$link";
    $output .= '
        <div class="property-details">
            <div class="property-details-inner">

                <form method="post" action="" class="jcart">
                    <fieldset>
                        <input type="hidden" name="jcartToken" value="' . $_SESSION['jcartToken'] . '" />
                        <input type="hidden" name="my-item-id" value="' . $id . '" />
                        <input type="hidden" name="my-item-name" value="Photo #' . $id . '" />
                        <input type="hidden" name="my-item-url" value="' . wp_get_attachment_url( $id ) . '" />
                        <input type="hidden" name="my-item-qty" value="1" size="3" />';

    if(in_array($id,$psitems)) {
        $output .= '<span class="action terminal pull-sheet">Image in Pullsheet</span>'
    } else {
        $output .=          '<input type="submit" name="my-add-button" value="Add to Pull Sheet" class="action terminal pull-sheet" />';
    }
    $output .=              '</fieldset>
                </form>
            </div> <!-- property-details-inner -->
        </div>';
    $output .= "</div>";
}

return $output;

我收到以下错误:

  

在非对象

上调用成员函数get_contents()

如果我尝试将原始foreach($jcart->get_contents() as $item) { ...代码放在函数之外,我会收到以下错误:

Warning: in_array() expects parameter 2 to be array, null given in...

如何在函数内部访问此数组并避免这些错误?

谢谢!

1 个答案:

答案 0 :(得分:1)

关于第一个错误,这意味着您必须初始化$ jcart。

关于警告,试试这个:

$array = $jcart->get_contents();
foreach ($array as $item) ...