仅显示数组中具有特定条件的项目

时间:2017-09-27 20:00:41

标签: php arrays

我试图只显示符合数组中某个条件的项目。目前我正在输出数组中的所有内容。 到目前为止我得到了什么:

$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。

2 个答案:

答案 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';

});

http://php.net/manual/en/function.array-filter.php

答案 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);

希望它有所帮助!如果没有,请随时联系。