簡體   English   中英

PHP多維數組+ MySQLi $行數組數據

[英]PHP multidimensional array + MySQLi $row array data

$category = array(
    "Alpha",
    "Beta",
    "Gamma",
    "Delta",
    "Epsilon",
    "Zeta"
);
for ($count = 0; $count < 5; $count++) {

    $query = "SELECT * FROM random_walk WHERE category = '$category[$count]'";
    $result = $mysqli->query($query) or die($mysqli->error . __LINE__);
    $row_cnt = $result->num_rows;

    if ($result->num_rows > 0) {
        $row_counter = 0;

        while ($row = $result->fetch_assoc()) {
            $category[$count][$row_counter] = $row['image_filename'];
            $row_counter++;

            echo $category[$count][$row_counter];
        }
    }
}

我試圖將MySQLi $行數據存儲到PHP 2維數組$category[][]

我初始化了一個名為$category的數組,其中包含我想要使用的類別名稱。 我現在想從我的數據庫中檢索記錄並將記錄字段image_file (例如poly_interpolated.jpg)的內容存儲到第二維並循環,直到數據庫中沒有該類別的圖像文件。

但是,當我回顯數組時,我只看到一個不是我期望發生的單個字符,因為$row['image_file' ]返回多個字符長度的文件名。 我原以為$category[$count][$row_counter] = $row['image_filename']; 將存儲文件的名稱,但似乎我在這個假設中有點偏離。

有人可以看一下上面的代碼並指出我正確的方向嗎?

這就是你要找的東西。

一些見解 - 你只看到一個角色,因為你沒有多維數組。 你有一個單維的字符串數組,當你訪問這些字符串的索引時,你會在字符串中得到一個字符。

您需要一個表示數組的關聯數組鍵。

我添加了其他代碼以將您的搜索連接到帶有IN子句的單個搜索,因此它將執行類似WHERE category IN ('Alpha', 'Beta', etc.) 這會快得多。

最后,對於每條記錄,您希望將其添加到具有匹配索引的類別數組中。 這會將您的數據排序到類別集合中。

哦,也不需要一個行計數器。 只需將行添加到其類別的末尾,即可在數組中正確編制索引。

$category = array(
    "Alpha" => array(),
    "Beta" => array(),
    "Gamma" => array(),
    "Delta" => array(),
    "Epsilon" => array(),
    "Zeta" => array()
);

// Concatenate the categories for searching
$categories = array_keys($category);
for ($i = 0; $i < count($categories); $i++) {
    $categories[$i] = "'{$categories[$i]}'";
}
$categories = implode(",", $categories);

// Query on an IN clause
$query = "SELECT * FROM random_walk WHERE category IN ({$categories})";
$result = $mysqli->query($query) or die($mysqli->error . __LINE__);
$row_cnt = $result->num_rows;

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $category[$row['category']][] = $row['image_filename'];
        echo $category[$row['category']][count($category[$row['category']]) - 1];
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM