Добавить несколько результатов MYSQLI в качестве значения массива в цикле foreach - PullRequest
0 голосов
/ 17 мая 2019

У меня есть этот скрипт, который преобразует записи MySQL в массив, и я использую цикл foreach, чтобы показать эти результаты.У меня проблема в том, как я могу также показать значение пола для array_column в цикле foreach?

Я могу только показать значение имени пользователя.Я не знаю, как я могу показать гендерные значения в цикле foreach.Пожалуйста, не предлагайте другие типы петель.Мне нужно сделать это с помощью цикла foreach с array_column.

Вот мой пример кода

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

2 голосов
/ 17 мая 2019

В цикле foreach, который вы настроили, $ index содержит 'user_id'.

echo $index . ': ' . $value

Результат:

"*user_id*: *username*"
0 голосов
/ 17 мая 2019

Я предполагаю, что вы имеете в виду, как показывать несколько значений массива в цикле 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>';

}

?>
0 голосов
/ 17 мая 2019

Если у вас есть такой массив:

$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>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...