2009-03-28 5 views
0

2つの配列が返されたときに、配列の特定の部分を選択する方法は?私が持っているwhileループで

Array 
(
[4] => Post Content 
[value] => Post Content 
) 

Array 
(
[4] => Post Title 
[value] => Post Title 
) 

どのように私は「ポストコンテンツ」と「ポストタイトルを選択することができます。$rowの下で開催された

$row = mysql_fetch_array($result) 

print_r表示次を使用して示す二つの配列ですwhileループで繰り返されることなく配列から削除されますか?

この質問の元のバージョンでは、問題と重複が混同されていました。 2番目の配列[value]が両方とも$rowに格納されている場合、これらの配列を抽出する方法が問題です。

+0

別の質問があると思います.2つの関連する情報が2つの異なる行のクエリに返されるのはなぜですか? – nickf

+0

確かに。このプロジェクトにはデータベースからデータを移行する作業が含まれていましたが、私は設計しませんでした。今のところ、問題は解決されています。ご関心をお寄せいただきありがとうございます。 – nickcharlton

答えて

0

最終的な解決策は、元のクエリをTopbitの提案に従ってわずかに再構成し、2つのwhileループを使用することによって検出されました。

while($row_title = mysql_fetch_array($result_title)){ 
$row_body = mysql_fetch_array($result_body); 

    // code 
} 

ソリューションを提案したすべての方に感謝します。

1

アレイにはuniqueの値しかないことを確認しますか?それが配列内の配列ではうまくいかない場合は、あなたがすでに見たことのあるストアを使って古典的な反復処理を行います。

$dedupedValues = array() 
foreach ($row as $items) { 
    if (! is_set($dedupedValues[$items['value']])) { 
     $dedupedValues[$items['value']] = true; // we have this value 
     echo "echo the title/value...."; 
    } 

} 

別の方法としては、最初の場所での重複を避けるために開始するためにデータを取得するSQLを改善することである(参照:MySQL 'DISTINCT')を

2

また、値が二度instertedされることはありませんことを確認することができますmysql_fetch_assoc()またはmysql_fetch_row()を使用します。 )

$row = mysql_fetch_assoc($result); 
Array 
(
['value'] => Post Content 
) 

Array 
(
['value'] => Post Title 
) 
1

ピムイェーガーは、これを行うためのより良い方法を示したが、あなたは(は、mysql_fetch_arrayを使う、という場合:

$i = 0; 
$size = count($row); 
if ($size > 0) { 
    while ($i < floor($size/2)) { 
    ..... = $row[$i]; 
    $i += 1; 
    } 
} 

編集:
は、このように

をもう一度読んだ後、私は」私が質問をよく理解しているかわからない。

あなたは、例えば配列の入れ子になっている場合:

$row = array('data1' => array('orange', 'banana', 'apple'), 
      'data2' => array('carrot', 'collard', 'pea')); 

をそして、あなたは、各アレイにアクセスしたい:

$data1 = $row['data1']; 
// = array('orange', 'banana', 'apple') 
$data2 = $row['data2']; 
// = array('carrot', 'collard', 'pea') 
// OR 
$orange = $row['data1'][0]; 
$banana = $row['data1'][1]; 
$apple = $row['data1'][2]; 
$carrot = $row['data2'][0]; 
// ... so on.. 

をアカウントにループはこのようになっていることを取る:

$i = 0; 
$size = count($row); 
if ($size > 0) { 
    while ($i < floor($size/2)) { 
    $something = $row['data1'][$i]; //Or $row[0][$i]; using your example 
    $something = $row['data2'][$i]; //Or $row[1][$i]; using your example 
    $i += 1; 
    } 
} 

しかし、実際には、Pims Jagersの例のようにmysql_fetch_assoc()とforeachループを使用することをお勧めします

関連する問題