【发布时间】:2021-05-24 03:49:25
【问题描述】:
我有一个csv file,其中包含要在项目中显示的商店属性(id、名称、类别、特色等)。现在,我需要显示条件为 'featured'='TRUE' 的特色商店数组。有10 results。
这是读取文件并将数据保存为关联数组的代码
function read_all_stores() {
$file_name = 'csv_files/stores.csv';
$fp = fopen($file_name, 'r');
$first = fgetcsv($fp); // get the first row aka headlines of the file
$stores = [];
while ($row = fgetcsv($fp)) {
$i = 0;
$store = [];
foreach ($first as $col_name) {
$store[$col_name] = $row[$i];
$i++;
}
$stores[] = $store;
}
return $stores;
}
sample result of the first 5 stores
现在我只想显示具有属性 features = 'TRUE' 的商店。我试过这段代码:
function get_store() {
$stores = read_all_stores();
$feature = [];
foreach ($stores as $s) {
while ($s['featured'] == 'TRUE') {
$feature[] = $s;
return $feature;
}
}
return false;
}
但它只返回one result。
我尝试删除单引号,但它似乎只接受 'TRUE' 值作为字符串而不是布尔值。如何修复这个 foreach 循环??
【问题讨论】:
-
是这条线导致了问题吗?
$stores[] = $store;。此外,在get_store方法中,一旦有匹配项,您就会返回。我认为您应该将所有匹配的添加到一个数组中,然后在方法的末尾返回。