PHP多变量数组输出

时间:2018-06-06 01:16:26

标签: 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存储为值,将Name存储为选项显示。到目前为止我下面的代码只输出列表中的第一个条目,因此循环不正确。所以,请帮忙。 :)

  <select class="form-select" multiple id="SelectName" name="name_list[]">        
  <?php             
    $selectLength = count($sArray);
    for ($j=0 ; $j<$selectLength ; $j++) {
    foreach ($sArray[$j] as $value) {           
    echo"<option value=$value name='name_list[]'>$value</option>"?>    
   <?php 
        }
    } ?>
 </select>

下面是数组内容的转储:

array(1) { [0]=> array(2) { ["Name"]=> string(3) "Sue" ["ID"]=> string(3) "234" } } array(1) { [0]=> array(2) { ["Name"]=> string(4) "John" ["ID"]=> string(3) "123" } }

提前致谢。

更新: 根据要求,下面是填充数组的循环。它基本上读取一个包含Name和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);          
        }
    }

3 个答案:

答案 0 :(得分:1)

正如我所看到的,你需要的只是一个foreach for you array。看看

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

    }

答案 1 :(得分:0)

您可以使用foreach循环并在循环内部,当前对象($value)将包含IDName,您可以使用它来构建下拉列表< / p>

<?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>

答案 2 :(得分:0)

实现这一目标的更简洁方法是使用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;
}

然后只需在您想要的地方运行此功能:

$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" 

如果您需要更多解释,请访问Google:

PHP多维关联数组或使用以下官方PHP文档中的链接读取: http://php.net/manual/en/language.types.array.php