PHP, каким способ можно разделить массив?

216
30 марта 2018, 14:02

Здравствуйте. У меня есть список городов (12 штук) и мне нужно вывести их в две колонки, в каждой по 6.

Сделала таким способом:

 $selectCity = "select districtName from telegramCity limit 12 offset 0";
    $result = mysqli_query($this->connection, $selectCity);
    // 1st fetch
    while ($row = mysqli_fetch_assoc($result)) {
        $data1 = [
            "text" => $row["districtName"],
            "callback_data" => json_encode(['a'=>'dist', 'p' => 1], JSON_PRETTY_PRINT)
        ];
        // prepare an empty array, in case of there is no more results
        $data2 = [
            'text' => '',
            'callback_data' => json_encode(['a'=>'dist', 'p' => 1], JSON_PRETTY_PRINT)
        ];
        // 2nd fetch, and put in $data2
        if ($row = mysqli_fetch_assoc($result)) {
            $data2["text"] = $row["districtName"];
        }
        // fill final array using the 2 arrays
        $buttons[] = [$data1, $data2];
    }
    $data3 = [
        "text" => ">",
        "callback_data" => "next"
    ];
   $buttons[] = [$data3];

Но это не очень удобно, потому что, во-первых, у меня есть пагинация и нужно дублировать большое количество кода, а во-вторых хотелось бы сделать это более автоматизированным. Чтобы, например, была переменная, которая бы значила к-во колонок, но ничего в голову не приходит. Подскажите, пожалуйста

Answer 1

Если я правильно понял вопрос, вам нужно разделить массив, для этого можете использовать array_chunk(). Приведу простой пример։

$arrayResult = array('a', 'b', 'c', 'd', 'e');
array_chunk($arrayResult, 2);

Где первый параметр это ваш исходный массив, вторым параметром вы указываете количество элементов, которые должны быть в каждом массиве. Более детально в документации

Answer 2

Можно как-то так

$one_row = [];
$cnt = 0;
while ($row = mysqli_fetch_assoc($result)) {
    $one_row[$cnt] = [
        "text" => $row["districtName"],
        "callback_data" => json_encode(['a'=>'dist', 'p' => 1], JSON_PRETTY_PRINT)
    ];
    $cnt++;
    //Две колонки
    if ($cnt == 2) {
        $buttons[] = $one_row;
        $one_row = [];
        $cnt = 0;
    }
}
READ ALSO
Bootstrap tab вывод курсов c базы данных php

Bootstrap tab вывод курсов c базы данных php

И так, имеется 2 таблицы в базе данныхОдна отвечает за тип курсов , вторая за сами курсы

224
можно ли в одном sql запросе поставить 2 update php

можно ли в одном sql запросе поставить 2 update php

Здравствуйте, скажите пожалуйста можно ли в одном sql запросе поставить значение update - а чтобы сразу обновились две поле, если да то приведите...

215
No readline support detected. Windows Console (PowerShell)

No readline support detected. Windows Console (PowerShell)

Здравствуйте, ну если объяснить что я пытаюсь сделать то вот: Есть Interactiv Magento Console, я его установил и при попытке вызова файла выводится следующее:

195
Уникальный slider Wordpress

Уникальный slider Wordpress

Привет всем! Сайт на wordpressПри добавлении на страницу картинок, отображаются искаженными

259