PHP多变量数组输出

PHP多变量数组输出,php,arrays,Php,Arrays,我有一个简单的问题 我有一个数组,它有两个变量,我是这样定义的: $sArray[0]['Name'] = $sName; $sArray[0]['ID'] = $sID; 上面是一个为sName和sID提供数据的循环。数据示例如下: Name: John Smith ID: 123 Name: Sue Smith ID:234 我希望以多选HTML输出sName数据,并将ID存储为值,将名称存储为选项显示。到目前为止,我下面的代码只输出列表中的第一个条目,因此循环是不正确的。所以,请帮忙。

我有一个简单的问题

我有一个数组,它有两个变量,我是这样定义的:

$sArray[0]['Name'] = $sName;
$sArray[0]['ID'] = $sID;
上面是一个为sName和sID提供数据的循环。数据示例如下:

Name: John Smith ID: 123
Name: Sue Smith ID:234
我希望以多选HTML输出sName数据,并将ID存储为值,将名称存储为选项显示。到目前为止,我下面的代码只输出列表中的第一个条目,因此循环是不正确的。所以,请帮忙。:)

提前谢谢

更新: 根据请求,下面是填充数组的循环。它基本上读取包含名称和ID数据的XML文件,并将其放入数组中

$fetchdata = simplexml_load_string($xml);    
foreach ($elm->res as $list) {
        $Team = $Agentlist->xpath('team[@name="Stock"]');
        if (count($Team) >= 1) {
            $fName = (string)$list->fName;
            $ID = (string)$list->ID;
            $sArray[0]['Name'] = $fName;
            $sArray[0]['ID'] = $ID;
            var_dump($sArray);          
        }
    }

正如我所看到的,您只需要一个foreach for your数组。看一看

foreach($sArray as $value){ 
    echo '<option value="'.$value['ID'].'">'.$value['Name'].'</option>';

    }
foreach($sArray作为$value){
回显'.$value['Name'].';
}

您可以使用
foreach
循环,在循环内部,当前对象(
$value
)将包含
ID
Name
,可用于构建下拉列表

<?php
$sArray[0]['Name'] = 'John';
$sArray[0]['ID'] = '123';
$sArray[1]['Name'] = 'Sue';
$sArray[1]['ID'] = '234';

?>


<select class="form-select" multiple id="SelectName" name="name_list[]">        
    <?php
    foreach ($sArray as $value) {

        echo'<option value="'.$value['ID'].'" name="name_list[]">'.$value['Name'].'</option>';

    }
    ?>
</select>

实现这一点的更简洁的方法是使用ID作为包含用户数据的数组的键。但是,如果您无法控制数组结构,则只需将ID提取为任何其他值。 这样,您的阵列将更轻,更易于阅读。 您还应该创建一个输出函数,以防需要多次创建选择框,以便可以重用它

示例:

$user_list[$id]['first_name'] = 'John';
$user_list[$id]['last_name'] = 'Doe';

function select_user($user_list=[], $name='user_list', $multiple=''){

    $select = '<select name="'.$name.'" '.$multiple.'>'; //use attribute multiple for multiselect
    foreach($user_list as $user_key=>$user){ 
        $user_ID = $user_key;   // Option 1: $user_ID as Key 
        $user_ID = $user['ID']; // Option 2: $user_ID as Value 
        $select .= '<option value="'.$user_ID.'">'.$user['first_name'].' '.$user['last_name'].'</option>';
    }
    $select .= '</select>';
    return $select;
}
如果您需要更多解释,可以通过谷歌搜索:

PHP多维关联数组,或使用以下链接从官方PHP文档中读取:

尝试添加一些文本来解释您的答案。OP做错了什么?为什么这是实现它的一个好方法?通常情况下,只有代码的答案不是很有用。您没有增加数组。使用$sArray[],而不是$sArray[0]。如果我这样做,并按照您建议的方式输出,它将只显示第一个字母。我认为我遇到的问题是,我不太明白如何在数组中存储两个变量,并在以后检索它们。谢谢你,亨巴。这是另一个更新。。。最后,我将变量填充到各个数组中,并将它们组合起来输出。
<?php
$sArray[0]['Name'] = 'John';
$sArray[0]['ID'] = '123';
$sArray[1]['Name'] = 'Sue';
$sArray[1]['ID'] = '234';

?>


<select class="form-select" multiple id="SelectName" name="name_list[]">        
    <?php
    foreach ($sArray as $value) {

        echo'<option value="'.$value['ID'].'" name="name_list[]">'.$value['Name'].'</option>';

    }
    ?>
</select>
$user_list[$id]['first_name'] = 'John';
$user_list[$id]['last_name'] = 'Doe';

function select_user($user_list=[], $name='user_list', $multiple=''){

    $select = '<select name="'.$name.'" '.$multiple.'>'; //use attribute multiple for multiselect
    foreach($user_list as $user_key=>$user){ 
        $user_ID = $user_key;   // Option 1: $user_ID as Key 
        $user_ID = $user['ID']; // Option 2: $user_ID as Value 
        $select .= '<option value="'.$user_ID.'">'.$user['first_name'].' '.$user['last_name'].'</option>';
    }
    $select .= '</select>';
    return $select;
}
$user_list = get_users_from_DataBase(); // example function for getting all users from DB
echo select_user($user_list); // Simple Select box
echo select_user($user_list,'user_list[]','multiple'); // Select Box with custom array name[]* & with attribute "multiple"