фильтрация многомерного массива в PHP по некоторым значениям - PullRequest
0 голосов
/ 14 января 2020

Мне нужно исправить существующий код для записи значений, только если значения 0, 1 и 2 одинаковы, но я не могу достичь этого. Например, я хочу видеть элементы в первом случае (1 = 1 = 1), но не во втором (2! 1 = 1).

$plist=array(
        array('100% CSB','75% CSB','Sans CSB','MSN 100%CSB','MSN sans CSB'),
        array(1,1,1,10.4,9.09,),
        array(2,1,1,20.4,17.84,),
        array(2,2,1,21.7,18.97,),
        array(2,2,2,31.4,27.89,),
        array(3,2,2,40.5,36.31,),
        array(3,3,2,42.8,38.44,),
        array(3,3,3,52.2,47.09,),
        array(4,3,3,60.7,54.78,),
        array(4,4,3,64,57.77,),
        array(4,4,4,73.3,66.18,),
        array(5,4,4,81,73.15,),
        array(5,5,4,85.2,77.01,),
        array(5,5,5,94.2,85.45,),
        array(6,5,5,101.2,92.01,),
        array(6,6,5,106.1,96.6,)
    );
    $cnt=0;
    foreach ($plist as $pligne) {

        $cnt++;
        if ($cnt==19) {
            echo '</table></td><td bgcolor="#ffffff">&nbsp;</td><td valign="top">';
            echo '<table border="0" cellspacing="0" cellpadding="0" class="hoverTable"><tr>';
            foreach($plist[0] as $ke) {
                echo '<td align="right">'.$ke.'&nbsp;</td>';
            }
            echo '</tr>';

        }
        $minu=floatval($pligne[3])-(floatval($pligne[3])-floatval($pligne[4]))*0.25;
        echo '<tr onmouseover="document.form.abc.value='.$pligne[3].'; document.form.scsb.value='.$pligne[4].'; 
                document.form.min.value='.round($minu,2).';     "
                onclick="allid.listeplex.style.display=\'none\'; allid.affplex.style.display=\'block\';""
             >';
        foreach($pligne as $ke) {
            echo '<td align="right">'.$ke.'&nbsp;</td>';
        }
        echo '</tr>';
    }

Моей первой идеей было что-то вроде:

if($plist[$cnt][0]===$plist[$cnt][1] AND $plist[$cnt][0]===$plist[$cnt][1] AND $plist[$cnt][0]===$plist[$cnt][1]){
}

, но оно не работает (не то, куда его поместить или какое имя переменной используют)

1 Ответ

1 голос
/ 14 января 2020

Убедитесь, что 1-е равно 2-му, а 1-е равно 3-му.

Внутри foreach ($plist as $pligne) { используйте это условие:

if ($pligne[0] === $pligne[1] && $pligne[0] === $pligne[2]) {

Вам не нужно вручную увеличивать $cnt в своем фрагмент, вы можете объявить $cnt в вашем foreach() l oop и пропустить шаг ручного увеличения ($cnt++;).

foreach ($plist as $cnt => $pligne) {

Если вам необходимо безоговорочно разрешить первый ряд в вашем массиве, затем просто проверьте, равен ли $cnt нулю.

if (!$cnt || ($pligne[0] === $pligne[1] && $pligne[0] === $pligne[2])) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...