Поскольку вы не используете ключ, предоставляемый each
, в этом контексте он не нужен.
Поскольку массивы передаются путем копированиявместо ссылки, вы можете использовать array_shift()
в качестве альтернативы, если вы не используете $table_array
снова в том же контексте.
foreach ($tables as $table_array) {
$table = array_shift($table_array);
var_dump($table);
}
Имейте в виду, что array_shift извлекает текущее значение и удаляет его из массива.
Поскольку each()
извлекает текущую пару значений ключей и перемещает указатель на следующее значение,Вы можете заменить его на current()
и next()
.
foreach ($tables as $table_array) {
$table = current($table_array);
var_dump($table);
next($table_array);
}
Если вам нужно key
текущего значения при использовании current
и next
, вы можете использовать key()
foreach ($tables as $table_array) {
$key = key($table_array);
$table = current($table_array);
var_dump($key, $table);
next($table_array);
}
Поскольку используемый сценарий автоматического резервного копирования использует PDO , вы можете уменьшить сложность, используя fetchAll(PDO::FETCH_COLUMN);
вместо executeGetRows
, что приведет к получению плоского массиваиндексированный столбец 0, а не пара ключ-значение столбца.
$result = $dbc->prepare("show tables");
$result->execute();
$i=0;
$table="";
$tables = $result->fetchAll(\PDO::FETCH_COLUMN);
foreach ($tables as $table) {
//...
}