调用在其他文件的函数中创建的$index,php

我试图调用一个名为$index的变量,来计算一个函数内部的foreach迭代次数。在这个函数中,我调用了另一个函数,它需要在foreach结束时获得这个$index值。

       <?php

$index = 0;

function edit_profile_form() {

    global $index;
    $current_user_id = get_current_user_id();
    $data = get_user_meta ($current_user_id);

    if (isset($_POST['button2'])) {
        delete_user_meta($current_user_id, 'experiences');
    }

    if(isset($_POST['button1'])) {
        save_extra_profile_fields($current_user_id, $index);
    };

    $experiences = get_user_meta($current_user_id, 'experiences', true);

?>

[...SOME CODE HERE...]

接下来在文件中(但总是在函数中),我调用了这个.index。

if (!empty($experiences)) {
        foreach ($experiences as $key) {
        ?>
            <div class="past_experience">
                <div class="experience_header">
                    <div>
                        <label for="team">Nom de l'équipe</label>
                            <input class="team" name="team_<?= $index ?>" value="<?= $key['new_experience_team'];?>"/>
                    </div>
                    <div>
                        <label for="role">Rôle dans l'équipe</label>
                            <input class="role" name="role_<?= $index ?>" value="<?= $key['new_experience_role'];?>"/>
                    </div>
                </div>

                <div class="experience_textarea">
                    <label for="description">Description du rôle</label>
                    <textarea class="description" name="description_<?= $index ?>"><?= $key['new_experience_description']; ?></textarea>

                    <label for="palmares">Palmarés avec l'équipe</label>
                    <textarea class="palmares" name="palmares_<?= $index ?>"><?= $key['new_experience_palmares']; ?></textarea>
                </div>
            </div>  
        <?php
        $index++;
        } 

    } else {
    ?>
    <div><p>Vous n'avez encore rentré aucune expérience</p></div>

这里是在文件开始时调用的函数,但放在另一个文件中。

function save_extra_profile_fields($user_id, $index) {

if (!empty($_POST['experiences'])) {
    $experiences[] = $_POST['experiences'];
    for ($i = 0; $i < $index; $i++) {
        $experience_{$i}['new_experience_team'] = $_POST["team_{$i}"];
        $experience_{$i}['new_experience_role'] = $_POST["role_{$i}"];
        $experience_{$i}['new_experience_description'] = $_POST["description_{$i}"];
        $experience_{$i}['new_experience_palmares'] = $_POST["palmares_{$i}"];
        $experiences[] = $experience_{$i};
    }
    update_usermeta($user_id, 'experiences', $experiences);
}

}

因为在这个函数中,其实并没有定义$index,所以无法使用。

谢谢大家

解决方案:

试试

变化 function edit_profile_form()

function edit_profile_form() use ($index)

然后把里面的全局关键词去掉。

全局方式

要想让它对所有功能都可用,你可以使用 $GLOBALS['index'] 而不是处处 $index.

给TA打赏
共{{data.count}}人
人已打赏
解决方案

在2个tds之间建立关系- Selenium Java。

2022-5-14 1:00:07

解决方案

启用蓝牙并连接到特定蓝牙设备的Windows 10批处理脚本 [关闭]。

2022-5-14 1:00:12

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索