3

からのすべての要素を、classlist私と人に共通している場合にのみ表示するようにしています。たとえば、位置1、2、5にクラスがあり、クラス9、1、8、17、3にいる人物bのプロファイルを使用している場合、両方に1が含まれているため、1つしか表示されません。classlist


(出典:goawaymom.com

を爆発させてすべてに独自の変数を与えるなど、いくつかのことを試しましたclasslist...何も機能していないようで、私が試みるすべてを複雑にしすぎています。誰かがこれを行う簡単な方法を知っていますか?

<?php
if ($_SESSION['classlist'] == $user_info['classlist']) {
echo ($user_info['classlist']);

} else {
    echo 'No Common Classes';
}
?>

上記のコードは、人aとbの順序が同じ順序で同じクラスを持っているclasslist場合にのみ表示されます。classlist

4

2 に答える 2

3

array_intersect

例えば:

// fetch your results from the database
$myclasses = explode(',', $myrow['classlist']);
$theirclasses = explode(',', $theirrow['classlist']);

$common_classes = array_intersect($myclasses, $theirclasses);

または、あなたの場合:( $ _SESSION['classlist']と$user_info['classlist']の両方がコンマ区切りの数値を含む文字列であると仮定します: '1,2,3,4,5')

$myclasses = explode(',', $_SESSION['classlist']);
$theirclasses = explode(',', $user_info['classlist']);
$common_classes = array_intersect($myclasses, $theirclasses);

if (count($common_classes) > 0)
{
    echo '<p>You have the following classes in common.</p>';
    echo '<ul>';
    foreach ($common_classes as $class)
    {
        echo '<li>' . $class . '</li>';
    }
    echo '</ul>';
}
else
{
    echo '<p>Billy no mates :(</p>';
}
于 2012-11-23T09:57:05.823 に答える
0

私があなたが正しいことを理解しているなら、多分これはうまくいくでしょう

// $_SESSION[ 'classlist' ] = 9,1,8,17,3,
// $user_info[ 'classlist' ] = 1,2,5

$a_session = explode( ",", $_SESSION[ 'classlist' ]);
$a_user_info = explode( ",", $user_info[ 'classlist' ]);
$common_classes = array();

foreach( $a_session as $key => $value )
{
    if( isset($value)===TRUE && $value != NULL && trim($value) != '' )
    {
        if( in_array( $value, $a_user_info ) === TRUE )
        {
            $k = array_search( $value, $a_user_info);
            $common_classes[] = $a_user_info[ $k ];
        }
    }
}

var_dump( $common_classes );
于 2012-11-23T10:10:42.130 に答える