在foreach循环中将多个MYSQLI结果添加为数组值

时间:2019-05-17 00:40:37

标签: php mysqli

我有这个脚本将mysqli记录转换成数组,我正在使用foreach循环来显示那些结果。我遇到的问题是如何也可以在foreach循环中显示array_column的性别值?

我只能显示用户名值。我不知道如何在foreach循环中显示性别值。请不要建议其他循环类型。我需要使用带有array_column的foreach循环来完成此操作。

这是我的代码示例

<?php

$db_servername='localhost';
$db_username='bbb';
$db_password='1234';
$db_name='test';

$db_connect= new mysqli($db_servername,
$db_username,$db_password,
$db_name);

$db_query= "SELECT*FROM 500_users LIMIT 25";

$db_result= $db_connect->query(
$db_query);


while($db_row= $db_result->fetch_assoc()){
    $items[] = $db_row;
}

$array_structure_for_items_value_id = array_column($items,'username','gender');

foreach($array_structure_for_items_value_id as $index => $value){ 

echo $value.'<br>';//<--username
//echo $value.'<br>';<--I will like to show the gender value as well but how?

}

?>

3 个答案:

答案 0 :(得分:2)

我假设您的意思是如何在foreach循环中显示多个数组值,如果这是您的意思,那么这是我的示例方法,其中使用第三个组合数组值来说明这一点。只是为了让您更好地理解我的例子。

<?php

$db_servername='localhost';
$db_username='bbb';
$db_password='1234';
$db_name='test';

$db_connect= new mysqli($db_servername,
$db_username,$db_password,
$db_name);

$db_query= "SELECT*FROM 500_users LIMIT 25";

$db_result= $db_connect->query(
$db_query);


while($db_row= $db_result->fetch_assoc()){
    $items[] = $db_row;
}

$array_1 = array_column($items,'username');
$array_2 = array_column($items,'gender');
$array_3 = array_column($items,'password');

$iterator = new MultipleIterator();
$iterator->attachIterator(new ArrayIterator($array_1));
$iterator->attachIterator(new ArrayIterator($array_2));
$iterator->attachIterator(new ArrayIterator($array_3));

foreach($iterator as $index => $value){ 

echo $index[0].'<br>';
echo $value[0].'<br>';

echo $index[1].'<br>';
echo $value[1].'<br>';

echo $index[2].'<br>';
echo $value[2].'<br>';

}

?>

答案 1 :(得分:0)

如果您有一个像这样的数组:

$heroes = [
    ['id' => 10,'hero' => 'superman', 'gender' => 'm'],
    ['id' => 21,'hero' => 'wonder woman', 'gender' => 'f'],
    ['id' => 34,'hero' => 'poison ivy', 'gender' => 'f'],
    ['id' => 46,'hero' => 'penguin', 'gender' => 'm'],
];

然后您这样做:

$other = array_column($heroes, 'hero', 'id');

您得到了:

[
    10 => 'superman',
    21 => 'wonder woman',
    34 => 'poison ivy',
    46 => 'penguin'
]

如果遍历此数组,则只能获取索引或英雄名称,因为这就是数组中的全部内容。

如果您这样做:

$other = array_column($heroes, 'hero', 'gender');

您得到了:

[
    'f' => 'poison ivy',
    'm' => 'penguin'
]

因为使用性别作为密钥,并且密钥必须唯一。

因此,妨碍您使用array_column的原因。 我不明白为什么您只是不遍历数组。 您不需要array_column。

while($db_row= $db_result->fetch_assoc()){
    $items[] = $db_row;
}

foreach($items as $item) {
    echo $item['hero'].'<br>';
    echo $item['gender'] . '<br>';
}

答案 2 :(得分:-1)

在您设置的foreach循环中,$ index保留了'user_id'。

echo $index . ': ' . $value

结果:

"*user_id*: *username*"