2016-04-15 12 views
1

私はPHPにはかなり新しいので、私の質問には非常に簡単な答えがあるかもしれませんが、ACFフォーラムとGoogleを検索しました。うまくいけば、ここの誰かが助けることができます複数のポストオブジェクトフィールドからの合計数を取得

私は自分のページに4つのマルチセレクトポストオブジェクトフィールドを持っています。これらのポストオブジェクトのポスト(または私の場合はスタッフ)の総数を取得しようとしています。私はそれらを何とか組み合わせて、合計を条件付きで使うことができます。

count()を使用して1つの投稿オブジェクトの金額を取得することができます。

$instructor = get_field('course_instructors'); 

if (count($instructors) > 1) { 
    // dosomething... 
} 

count()の中にそれらを一緒に追加しようとしていません。私が使用している場合、それはそれのように見えますが...私も運とarray_merge()と他のアレイの機能を試してみたが、私はポストオブジェクトの出力が配列であることは100%確実ではないよ

$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... 
} 

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

が私のために働いてしまった解決策があります:(。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の勧告の両方に基づいています私はis_array()バリデーションの内側ではなく、count()のバリデーションを使用しています。配列が空であってもcount()を使用して検証の外で合計を合計すると '1'が返されました。私の配列のすべてが空であれば、私はまだ「4」を得ていました。 count() docには、「パラメータが配列でないか、またはCountableインターフェイスが実装されたオブジェクトでない場合は、1が返されます。

これを行うより良い方法があるかもしれませんが、これは私にとってはうまくいきます。

ありがとうございました!

1

あなたは良い軌道に乗っているが、あなたは一緒に行く必要がありますので、PHPのcountのみ、一度に1台の混合物/配列を受け入れ:

if (count($instructors) + count($leaders) + count($designers) + count($speakers) > 1) { 
    // dosomething... 
} 

それとも、ケース内の変数に結果を保つことができます後でコード内で再利用する必要があります。

$count = count($instructors) + count($leaders) + count($designers) + count($speakers); 

if ($count > 1) { 
    // dosomething... 
} 

希望します。ここで

+0

お返事ありがとうございます。私はあなたのソリューションを試しましたが、それは動作していないようです。私はprint_r()を使ってどのような値を得ているかを確認しました.4つの配列のオブジェクトの総数ではなく、配列の数(4)を返します。個々のポストオブジェクトでcount()を使用すると、正しい数値を取得できるので、非常に奇妙です。 –

+0

少なくとも1つの変数に対して 'print_r'の出力を投稿できますか? –

+0

もう一度お返事ありがとうございます!私はACFフォーラムで私の問題の解決策を見つけることができました...私も[この質問を投稿しました](https://support.advancedcustomfields.com/forums/topic/get-total-count-from-mult iple-post-object-fields /#post-37252)を参照してください。私はこのページの答えとして私のソリューションを追加しました。 –

関連する問題