Как я могу создать массив из цикла массивов foreach?

0

У меня два массива. Первый создается путем создания кусков $properties массива $properties.

$array1 = array_chunk($properties,10000,true);

Это выглядит так:

array(4) {
  [0]=>
  array(10000) {
    ["12345"]=>
    array(5) {
      ["dateTime"]=>
      string(19) "2016-10-12 19:46:25"
      ["fileName"]=>
      string(46) "monkey.jpg"
      ["path"]=>
      string(149) "Volumes/animals/monkey.jpg"
      ["size"]=>
      string(7) "2650752"
    }
    ["678790"]=>
    array(5) {
      ["dateTime"]=>
      string(19) "2016-10-12 14:39:43"
      ["fileName"]=>
      string(45) "elephant.jpg"
      ["path"]=>
      string(171) "Volumes/animals/elephant.jpg"
      ["size"]=>
      string(7) "2306688"
    }

... and so on.

Другой создается из базы данных:

  $countResult = "SELECT COUNT(*) AS 'count' FROM files"; 
  $q = $pdo->prepare($countResult);
  $q->execute();
  $row = $q->fetch(PDO::FETCH_ASSOC);
  $totalCount = $row['count'];
  $chunkSize = 10000;
  $from      = 0;

while($from < $totalCount)
{
   $sql = 'SELECT id, dateTime, fileName, path, size FROM files LIMIT ' . $from . ', ' . $chunkSize . ';'; 
   $q = $pdo->prepare($sql);
   $q->execute();
   $rows = $q->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC);

   echo "<pre>";
   var_dump($rows);
   echo "</pre>";

   $from += $chunkSize;
}

Результатом var_dump($rows) является следующее:

array(10000) {
  ["12345"]=>
  array(5) {
         ["dateTime"]=>
          string(19) "2016-10-12 19:46:25"
          ["fileName"]=>
          string(46) "monkey.jpg"
          ["path"]=>
          string(149) "Volumes/animals/monkey.jpg"
          ["size"]=>
          string(7) "2650752"
  }
  ["678790"]=>
  array(5) {
      ["dateTime"]=>
          string(19) "2016-10-12 14:39:43"
          ["fileName"]=>
          string(45) "elephant.jpg"
          ["path"]=>
          string(171) "Volumes/animals/elephant.jpg"
          ["size"]=>
          string(7) "2306688"
  }

and so on...

array(10000) {
  ["23424"]=>
  array(5) {
         ["dateTime"]=>
          string(19) "2016-10-12 14:46:25"
          ["fileName"]=>
          string(46) "rabbit.jpg"
          ["path"]=>
          string(149) "Volumes/animals/rabbit.jpg"
          ["size"]=>
          string(7) "2655752"
  }
  ["163452"]=>
  array(5) {
      ["dateTime"]=>
          string(19) "2016-10-12 12:39:43"
          ["fileName"]=>
          string(45) "snake.jpg"
          ["path"]=>
          string(171) "Volumes/animals/snake.jpg"
          ["size"]=>
          string(7) "2406688"
  }


and so on...

Таким образом, $array1 является разделенным массивом, который каким-то образом выглядит так, как будто он все еще один массив, содержащий 4 массива... (я этого не понимаю), но, тем не менее: мне нужно создать второй массив ($array2) из база данных mysql, которая будет выглядеть точно так же, как $array1 и я не знаю, как это сделать. Целью является то, что я хочу сравнить $array1 и $array2 проверку, соответствуют ли они.

  • 1
    Массив - это просто контейнер. Таким образом, он может содержать массивы. (Многомерные массивы). $super_rows[] = $rows 2-й раздел в массиве легко, просто $super_rows[] = $rows в ваш взгляд, и var выгрузит $super_rows но сравнивать их очень весело
Теги:
arrays
foreach
chunks

1 ответ

1
Лучший ответ

Создайте массив до времени, затем нажмите данные из базы данных:

//create the array here
$rows = [];
while($from < $totalCount)
{
   $sql = 'SELECT id, dateTime, fileName, path, size FROM files LIMIT ' . $from . ', ' . $chunkSize . ';'; 
   $q = $pdo->prepare($sql);
   $q->execute();
   //HERE $rows[]
   $rows[] = $q->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC);

   echo "<pre>";
   var_dump($rows);
   echo "</pre>";

   $from += $chunkSize;
}

Затем сравните способ, который вы хотите, массив $rows с $array1

  • 0
    О, круто. Это работает хорошо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню