Как отобразить все значения из переменной, которая содержит массив с несколькими значениями [duplicate]

Это можно сделать, используя toolz.concat или cytoolz.concat (cythonized версия, которая в некоторых случаях может быть быстрее):

from cytoolz import concat
l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
list(concat(l)) # or just `concat(l)` if one only wants to iterate over the items

На моем компьютере, в python 3.6, это похоже на время почти так же быстро, как [item for sublist in l for item in sublist] (не считая времени импорта):

In [611]: %timeit L = [item for sublist in l for item in sublist]
695 ns ± 2.75 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [612]: %timeit L = [item for sublist in l for item in sublist]
701 ns ± 5.5 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [613]: %timeit L = list(concat(l))
719 ns ± 12 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [614]: %timeit L = list(concat(l))
719 ns ± 22.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

Версия toolz действительно медленнее:

In [618]: from toolz import concat

In [619]: %timeit L = list(concat(l))
845 ns ± 29 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [620]: %timeit L = list(concat(l))
833 ns ± 8.73 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

11
задан Tom 28 September 2012 в 21:44
поделиться

3 ответа

просто замените его на mysqli_fetch_array или mysqli_result::fetch_array:)

while($row = $result->fetch_array())
  {
  echo $row['FirstName'] . " " . $row['LastName'];
  echo "<br />";
  }

Почти все функции mysql_* имеют соответствующую функцию mysqli_* ..

21
ответ дан raidenace 25 August 2018 в 07:17
поделиться

Простое решение mysqli:

$db = new mysqli('localhost','user','password','database');
$resource = $db->query('SELECT * FROM table WHERE 1');
while ( $rows = $resource->fetch_assoc() ) {
    print_r($rows);//echo "{$row['field']}";
}
$resource->free();
$db->close();

С обработкой ошибок: если есть фатальная ошибка, скрипт завершится с сообщением об ошибке.

// ini_set('display_errors',1); // Uncomment to show errors to the end user.
if ( $db->connect_errno ) die("Database Connection Failed: ".$db->connect_error);
$db = new mysqli('localhost','user','password','database');
$resource = $db->query('SELECT field FROM table WHERE 1');
if ( !$resource ) die('Database Error: '.$db->error);
while ( $row = $resource->fetch_assoc() ) {
    echo "{$row['field']}";
}
$resource->free();
$db->close();

Использование итераторов: добавлена ​​поддержка PHP 5.4

$db = new mysqli('localhost','user','password','database');
foreach ( $db->query('SELECT * FROM table') as $row ) {
    print_r($row);//echo "{$row['field']}";
}
$db->close();

Извлечение одной записи: этот код не требует

$db = new mysqli('localhost','user','password','database');
$resource = $db->query('SELECT field FROM table');
$row = $resource->fetch_assoc();
echo "{$row['field']}";
$resource->free();
$db->close();
4
ответ дан jaggedsoft 25 August 2018 в 07:17
поделиться

Использование:

while ($row = $result->fetch_array(MYSQLI_BOTH)) {
    // Look inside $row here, do what you want with it.
}

Посмотрите здесь на примеры ассоциативных массивов (также должны соответствовать версии fetch_array ()):

http: // php. нетто / ручной / EN / MySQLi-result.fetch-assoc.php

3
ответ дан Stegrex 25 August 2018 в 07:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: