Php 迭代类数组并将某些属性推入数组
下面的代码将迭代类数组,并将每个元素(如果存在)的Php 迭代类数组并将某些属性推入数组,php,functional-programming,iteration,declarative,Php,Functional Programming,Iteration,Declarative,下面的代码将迭代类数组,并将每个元素(如果存在)的content\u id属性推送到数组中: # Collect content jobs ids from the job to process $jobsToProcessContentIds = []; foreach ( $jobsToProcess as $job ) { if ( $job->content_id ?? null ) { array_push( $jobsToProcessContentId
content\u id
属性推送到数组中:
# Collect content jobs ids from the job to process
$jobsToProcessContentIds = [];
foreach ( $jobsToProcess as $job ) {
if ( $job->content_id ?? null ) {
array_push( $jobsToProcessContentIds, $job->content_id );
}
}
有没有一种更简短、更具说明性的方法来实现这一点?
这可能不会短得多,但使用声明式方法似乎是一个不错的选择 使用短路(即
&&&
)可以节省两行代码,尽管有些人认为它可读性较差
$jobsToProcessContentIds = array_reduce($jobsToProcess, function($carry, $job) {
($job->content_id ?? null) && $carry[] = $job->content_id;
return $carry;
});
请参见中的演示。
$jobsToProcessContentIds[]=$job->content\u id代码>
Array
(
[0] => y
)
$jobsToProcessContentIds = array_reduce($jobsToProcess, function($carry, $job) {
if ($job->content_id ?? null) {
$carry[] = $job->content_id;
}
return $carry;
});
$jobsToProcessContentIds = array_reduce($jobsToProcess, function($carry, $job) {
($job->content_id ?? null) && $carry[] = $job->content_id;
return $carry;
});