我对PHP很陌生,所以我的问题可能有一个非常简单的答案,但我搜索了ACF论坛和谷歌没有运气。希望有人可以提供帮助。
我的页面上有四个多选择的帖子对象字段,我试图获得这些帖子对象中的帖子总数(或者在我的情况下是人员)。我想以某种方式将它们组合在一起,这样我就可以使用有条件的总数。
我可以使用count()
获取单个帖子对象的金额。
$instructor = get_field('course_instructors');
if (count($instructors) > 1) {
// dosomething...
}
但尝试在count()
内添加它们不起作用。
$instructor = get_field('course_instructors');
$leaders = get_field('course_leaders');
$designers = get_field('course_designers');
$speakers = get_field('course_speakers');
if (count($instructors + $leaders + $designers + $speakers) > 1) {
// dosomething...
}
我也试过array_merge()
和其他数组函数没有运气,但我不是100%确定post对象的输出是一个数组......虽然它在我使用时看起来像它print_r()
。
理想情况下,我的代码可以像这样工作:
$instructor = get_field('course_instructors');
$leaders = get_field('course_leaders');
$designers = get_field('course_designers');
$speakers = get_field('course_speakers');
$all_staff = $instructors + $leaders + $designers + $speakers;
if (count($all_staff) > 1) {
// dosomething...
}
当我这样做时,我收到一个错误:“致命错误:......中不支持的操作数类型。”。
希望有人可以为我解答这个问题,或者至少指出正确的方向。 提前致谢。非常感谢!
答案 0 :(得分:1)
您已经走上了良好的轨道,但PHP count只能同时接受一个混合对象/阵列,所以您应该选择:
if ( count($instructors) + count($leaders) + count($designers) + count($speakers) > 1) {
// dosomething...
}
或者您可以将结果保存在变量中,以防您以后需要在代码中重复使用它:
$count = count($instructors) + count($leaders) + count($designers) + count($speakers);
if ( $count > 1 ) {
// dosomething...
}
希望它有所帮助!
答案 1 :(得分:0)
这是最终为我工作的解决方案:
(根据John Huebner在my post on the ACF support forum提供的建议。)
$instructors_total = 0;
$instructors = get_field('instructors');
if (is_array($instructors)) {
$instructors_total = count($instructors);
}
$leaders_total = 0;
$leaders = get_field('leaders');
if (is_array($leaders)) {
$leaders_total = count($leaders);
}
$designers_total = 0;
$designers = get_field('designers');
if (is_array($designers)) {
$designers_total = count($designers);
}
$speakers_total = 0;
$speakers = get_field('speakers');
if (is_array($speakers)) {
$speakers_total = count($speakers);
}
$staff_total = $instructors_total + $leaders_total + $designers_total + $speakers_total;
如上所述,这是基于@ hube2的两个建议,除了我在count()
验证中使用is_array()
而不是在我们的count()
验证之外。在验证之外使用document.getElementByClassName('myClassName').style.color = "red";
将总数添加到一起,返回了' 1'即使阵列是空的。因此,如果我的所有阵列都是空的,我仍然会得到#4;'。 count() doc指出:"如果参数不是数组,或者不是具有已实现Countable接口的对象,则返回1。"
可能有更好的方法可以做到这一点,但这对我来说效果很好。
感谢您的帮助!