【发布时间】:2021-08-11 23:39:10
【问题描述】:
所以我有一个当前有一个 foreach 的函数,它的效果非常好,但我不得不将它更改为一个 while 循环:
请注意:我公司的开发人员不想使用 foreach,他们认为 while 循环会更有效,但我不明白这会如何被执行,所以我需要一些帮助。
所以我有以下函数($post_blocks是一个数组数组):
public function parse_block_data(string $block_name, string $selector, $post_id)
{
if (!has_blocks($post_id)) {
return false;
}
$post_blocks = parse_blocks(get_the_content('', false, $post_id));
foreach ($post_blocks as $block) {
if ($block_name != $block['blockName']) {
continue;
}
if (!isset($block['attrs']['id'])) {
return false;
}
if (isset($block['attrs']['data'][$selector])) {
return $block['attrs']['data'][$selector];
} else {
break;
}
}
return false;
}
它使用参数构建一个数组,如下所示:
Output
所以我开始在函数内部构建一个 while 循环,但我不知道如何在不使用 foreach 或者甚至可能的情况下实现它,所以我将 foreach 替换为:
// I get the 9 counts of $post_blocks correctly.
$block = 0;
while ($block < count($post_blocks))
// If the $block_name doesn't match `blockName` value inside the multi-dimensional array, then continue iterating until the end and then return false.
// If ['attrs']['id'] is not set, return false.
// At last, if we have a blockName and a ID and the selector is set, return ['attrs']['data'][$selector]
}
所有帮助将不胜感激!这对我来说毫无意义,但如果有人能提供帮助,我将永远感激不尽!
【问题讨论】:
-
你今天早些时候有没有问过类似的问题?
标签: php