Php 警告:非法字符串偏移量';启用';在里面

Php 警告:非法字符串偏移量';启用';在里面,php,jquery,string,offset,jquery-steps,Php,Jquery,String,Offset,Jquery Steps,我们正在尝试使用jQuery步骤将一个表单拆分为多个页面。错误指向我们试图创建的表单。对表单的调用最初如下所示: $enable_paid_submission = houzez_option('enable_paid_submission'); $user_pack_id = get_the_author_meta( 'package_id' , $userID ); $remaining_listings = 0; if( is_page_template( 'subm

我们正在尝试使用jQuery步骤将一个表单拆分为多个页面。错误指向我们试图创建的表单。对表单的调用最初如下所示:

$enable_paid_submission = houzez_option('enable_paid_submission');
$user_pack_id       = get_the_author_meta( 'package_id' , $userID );
$remaining_listings     = 0;

if( is_page_template( 'submit_property_test.php' ) ) {

    if( $enable_paid_submission == 'membership' && $remaining_listings != -1 && $remaining_listings < 1 ) {
        print '<div class="user_package_status"><h4>'.esc_html__('HTMLhere.','houzez' ).'</h4></div>';

<?php
            $layout = houzez_option('property_form_sections');
            $layout = $layout['enabled'];

            if ($layout): foreach ($layout as $key=>$value) {
                switch($key) {
                    case 'features':
                        get_template_part( 'features' );
                        break;
                    case 'location':
                        get_template_part( 'location' );
                        break;
                    case 'multi-units':
                        get_template_part('multi-units');
                        break;
                }
            }
            endif;
            ?>
$enable_paid_submission=houzez_选项(“enable_paid_submission”);
$user\u pack\u id=获取作者元('package\u id',$userID);
$剩余物品=0;
if(是页面模板('submit_property_test.php')){
如果($enable_paid_submission=='membership'&&&$resisting_listings!=-1&&&$resisting_listings<1){
打印“.esc_html_uuu('HTMLhere.','houzez')”;
我们想将表单的三个部分(功能、位置和多单元)分成三个不同的页面。我们添加了jQuery步骤,现在看起来如下所示:

    <script>
        $(function ()
        {
            $("#wizard").steps({
                headerTag: "h2",
                bodyTag: "section",
                transitionEffect: "fade"
            });
        });
    </script>

    <div id="wizard">
        <h2>Features</h2>
        <section>
            <?php
            $layout = houzez_option('property_form_sections');
            $layout = $layout['enabled'];

            if ($layout): foreach ($layout as $key=>$value) {
                switch($key) {
                    case 'description-price':
                        get_template_part('features');
                        break;
                    }
            }
            endif;
            ?>
        <h2>Location</h2>
        <section>
            <?php
            $layout = houzez_option('property_form_sections');
            $layout = $layout['enabled'];
            if ($layout): foreach ($layout as $key=>$value) {
                switch($key) {
                    case 'description-price':
                        get_template_part('location');
                        break;
                    }
            }
            endif;
            ?>
        </section>
        <h2>Multi-units</h2>
        <section>
            <?php
            $layout = houzez_option('property_form_sections');
            $layout = $layout['enabled'];
            if ($layout): foreach ($layout as $key=>$value) {
                switch($key) {
                    case 'description-price':
                        get_template_part('multi-units');
                        break;
                    }
            }
            endif;
            ?>
        </section>

$(函数()
{
$(“#向导”)。步骤({
头像:“h2”,
bodyTag:“节”,
过渡效果:“褪色”
});
});
特征
位置
多单元

它在最初几个小时内运行正常。现在返回错误。

看起来您希望对
houzez_option()
的函数调用返回一个数组。从错误中可以看出它不是。没有看到
houzez_option()的内容
代码似乎无法告诉您为什么不是

您仍然可以通过让代码专门检查您期望从函数返回的内容来改进代码

        $layout = isset( $layout['enabled'] ) ? $layout['enabled'] : '';
        if ( is_array( $layout ) ): foreach ($layout as $key=>$value) {
            switch($key) {
                case 'description-price':
                    get_template_part('features');
                    break;
                }
        }
        else:
            echo 'Unable to retrieve options';
        endif;

这将防止出现错误,并提醒您它在前端不起作用。您还可以让最终用户更清楚地看到消息。我只是提供了一个通用示例。

您似乎期待对
houzez_option()的函数调用
返回数组。从错误中可以看出它不是。如果不查看
houzez_选项()
代码看起来是什么,就无法告诉您为什么它不是

您仍然可以通过让代码专门检查您期望从函数返回的内容来改进代码

        $layout = isset( $layout['enabled'] ) ? $layout['enabled'] : '';
        if ( is_array( $layout ) ): foreach ($layout as $key=>$value) {
            switch($key) {
                case 'description-price':
                    get_template_part('features');
                    break;
                }
        }
        else:
            echo 'Unable to retrieve options';
        endif;

这将防止出现错误,并提醒您它在前端不起作用。您还可以让最终用户更清楚地看到消息。我只是提供了一个通用示例。

这是JavaScript错误还是PHP错误?如果是PHP错误(我预期是由于字符串的位置
“enabled”
),请相应地更新您的标记。这实际上是Wordpress站点中的一个PHP错误。添加了PHP作为标记之一。感谢您的捕获。这是一个JavaScript错误还是一个PHP错误?如果是一个PHP错误(我认为是由于字符串
“enabled”
),请相应地更新您的标记。这实际上是Wordpress网站中的一个PHP错误。添加了PHP作为标记之一。感谢您的捕获。它确实消除了错误,但是表单元素也不再出现在那里。它现在由一个空白表单组成。我已编辑了我的初始查询,以包括houzez_option()@cErApHiM我没有看到函数定义。您还应该验证
$layout=houzez_选项('property_form_sections');
返回的内容,方法是使用
var_dump($layout);
它确实消除了错误,但是表单元素也不再出现在那里。它现在由一个空白表单组成。我已经编辑了我的初始查询,以包括houzez_option()。@cErApHiM我没有看到函数定义。您还应该验证
$layout=houzez_option]返回的内容('property_form_sections');
通过使用
var_dump($layout);