0

次の形式の ID 番号と配列がある場合、cat == 4 である他のすべてのアイテムの中で、どのカウント (位置番号) '赤' を見つけるにはどうすればよいですか? 私が探している答え #3 of 4. Array ( [0] => stdClass Object ( [id] => 1 [cat] => 1 [que] => Description here. )

    [1] => stdClass Object
        (
            [id] => 2
            [cat] => 1
            [que] => Description here.
        )

    [2] => stdClass Object
        (
            [id] => 3
            [cat] => 1
            [que] => Description here.
        )
 ....

    [31] => stdClass Object
        (
            [id] => 32
            [cat] => 4
            [que] => Description here.
        )

    [32] => stdClass Object
        (
            [id] => 33
            [cat] => 4
            [que] => Description here.
        )
    [33] => stdClass Object
        (
            [id] => 34
            [cat] => 4
            [que] => Red.
        )

    [34] => stdClass Object
        (
            [id] => 35
            [cat] => 4
            [que] => Description here.
        )
)

配列を分割してからループする必要がありますか? 失った...

- - - - - 編集 - - - - -

わかりました、私は悪い仕事をしました...

つまり、この配列には多くのオブジェクトがあります。それらはグループ、カテゴリに分類されます。[cat] は各グループの値です。各グループには複数のアイテムがあります。私が得たいと思っていたのは、各グループ内のアイテムの数と、そのグループ内の特定のアイテムの位置です。たとえば、12 個中 4 個です。

4

3 に答える 3

2
$position = 0;
$counts = array();

foreach ($yourarray as $obj) {
    if (!isset($counts[$obj->cat])) $counts[$obj->cat] = 0;
    $counts[$obj->cat]++;
    if ($obj->cat == 4 && $obj->que == "Red") {
        $position = $counts[$obj->cat];
    }
}

if ($position >= 0) {
    echo "Object is $position out of $counts[4] objects in category 4\n";
}
foreach($counts as $key=>$val){
    echo "Category $key has $val objects.\n";
}

(すべてのカテゴリをカウントするように修正)

于 2012-11-14T20:38:36.343 に答える
1

Ian Shannon の回答に対する私の編集は拒否されたので、配列表記の代わりにオブジェクト表記を使用して彼に基づいて構築し、合計を追跡する、私が提案したものを次に示します。

最も簡単な方法は、foreach を使用して配列をループし、cat == 4 の場合は、必要なカウンターに到達するまでカウンターをインクリメントすることだと思います。このようなもの:

$pos = 0;
$total = 0;
foreach ($yourarray as $subarray) {
    if ($subarray->cat == 4) {
        $total++;
        if ($subarray->que == "Red") {
            $pos = $total;
        }
    }
}

$pos探している要素の位置になり$total、そのカテゴリの合計になります。

于 2012-11-15T03:40:10.913 に答える
0
$found = 0;
foreach ($array as $key => $value) {
    if($value->cat == '4'){
        $arrayPosition = $key;
        $found++;
    }
}

echo 'Found ' . $found . ' cat\'s, matching the criteria';

cat=4 を除いて、一致基準がどうあるべきかを正確に理解していませんでした。「que」に一致させたい情報がさらに含まれている場合は、if ステートメントを変更してください。

if($value->cat == '4' && $value->que == 'Red'){
于 2012-11-14T23:06:49.677 に答える