0

私はphp配列の問題で立ち往生しています。URL から値を取得する Web ページにアクセスしました。これらの値をページ上のいくつかの値と相互参照し、一致する場合は「はい」を出力する必要があります。表現エンジンのお仕事です。

URL は domain.com/page/C12&C14 のようなものです

C12 と C14 は異なるカテゴリを表します。URL の最後のビットを取得し、値から「C」を削除してから、12 と 14 を配列に分解しました。

ページに配列を print_r すると、次のように表示されます: Array ( [0] => 12 [1] => 14 )

したがって、値は配列にあります。素晴らしい。

ページには、次のようなhtmlリストがあります

10
12
14
15

配列内の現在の変数の横に YES を出力したいので、理想的な出力は次のようになります。

10
12 - はい
14 - はい
15

私はこれを試していましたが、それらすべての横に「いいえ」と言い続けています。

$currentnumber = 12;
foreach ($tharray as $element) { 
if ($element == $currentnumber) { echo "Yes"; } else { echo "No"; }  
}

うまくいくはずだと思ったのですが、そうではありません。チェックしたところ、配列と変数は両方とも文字列です。両方で strlen() を実行して同じかどうかを確認しましたが、$currentnumber は「13」を出力し、配列変数は「2」を出力します。

なぜ13と言っているのですか?

変数は間違ったタイプの文字列ですか?もしそうなら、どうすれば変換できますか?

4

1 に答える 1

0

あなたが試すことができます

$tharray = array(10,12,14,15);
$allowed = array(12,14);

echo "<pre>";
foreach ( $tharray as $element ) {
    if (in_array($element, $allowed)) {
        echo $element, " -  Yes ", PHP_EOL;
    } else {
        echo $element , PHP_EOL ;
    }
}

1行のソリューションを気にしない場合

array_walk($tharray, function($item)use($allowed) { echo in_array($item, $allowed) ?  $item. " -  Yes ". PHP_EOL : $item . PHP_EOL  ;});

出力

10
12 -  Yes 
14 -  Yes 
15
于 2012-10-06T09:36:01.393 に答える