我试图只显示符合数组中某个条件的项目。目前我正在输出数组中的所有内容。 到目前为止我得到了什么:
$records = $d->get("FoundCount");
$result = array();
for($i = 1; $ <= $record; $i++){
// various array components
$show_published = $d->field(show_published); //this is the variable from the DB that will determine if the item is shown on the page. Yes/no string.
if($show_published == 'Yes'){
$results[] = new Result(//various array components, $show_published, //more things);
}
这似乎输出所有项目,包括标记为'No'
的项目。
任何指导都会很棒。我现在只使用了几个月的PHP。
答案 0 :(得分:0)
我不确定您是否熟悉composer
以及如何安装/使用php包。
如果是,您可以添加illuminate/support
包作为项目的依赖项,并使用其Collection
来过滤记录 - 具体内容如下:
use Illuminate\Support\Collection;
$collection = new Collection($records);
$outputArray = $collection->filter(function($object) {
return (string) $object->field('show_published') === 'Yes';
})->toArray();
https://laravel.com/docs/5.5/collections
在此之后,$outputArray
将仅包含将show_published
标记设置为Yes
的记录。
或者你可以用几乎相同的方式使用php的原生函数array_filter
:
$outputArray = array_filter($records, function($object) {
return (string) $object->field('show_published') === 'Yes';
});
答案 1 :(得分:0)
这是一个简单的示例,介绍如何根据字符“b&#39;”开头的字符串条件创建新的过滤数组。我不确定您的标准是什么,但您当然可以采用这种方法并对其进行修改以满足您的需求。
//Original array of things that are un-filtered
$oldArray = array("Baseball", "Basketball", "Bear", "Salmon", "Swordfish");
//An empty filtered array that we will populate in the loop below, based on our criteria.
$filteredArray = array();
foreach($oldArray as $arrayValue) {
//Our criteria is to only add strings to our
//filtered array that start with the letter 'B'
if($arrayValue[0] == "B")
{
array_push($filteredArray, $arrayValue);
}
}
//Our filtered array will only display
//our 3 string items that start with the character 'B'
print_r($filteredArray);
希望它有所帮助!如果没有,请随时联系。