[英]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.