0

フェッチ時にマルチフィールドレコードセットまたは配列を返すdbaseでクエリを実行しています。画面に出力するためにいくつかのフィールドが必要なため、配列はマルチフィールドです。ただし、次に、各レコードのIDである1つの変数の配列のみを保存します。別のレコードリストと比較します。したがって、実際には、配列から1つを除くすべてのフィールドを削除する必要があります。

実際には、(適切な配列表記を使用せずに)削減したい:

{1 red dog, 2 orange cat, 3 yellow canary}

{1,2,3}

これを行う簡単な方法はありますか?

前もって感謝します!

4

3 に答える 3

3

基本的に、必要なのは配列の抜き取りと呼ばれます。これを言語に導入するためのRFCがありますが、受け入れられていません。

それまでの間は、昔ながらの方法でそれを行う必要があります。

$a = array(
    array('id' => 1, 'title' => 'title1'),
    array('id' => 2, 'title' => 'title2'),
);

array_map(function($v) {
    return $v['id'];
}, $a);

// returns array(1, 2)

5.3より前では、次のように記述する必要があります。

function getid($v)
{
    return $v['id'];
}

array_map('getid', $a);
于 2012-10-06T15:52:30.227 に答える
1

配列設定の説明に従うかどうかはわかりませんが、探している関数は、配列キーのみを返す「array_keys」PHP関数である可能性があります。

これが探している答えではない場合は、適切な配列表記を使用するか、分離しようとしている値を指定するデータベースの実際の例を使用して、質問を明確にすることができます。

于 2012-10-06T15:48:34.127 に答える
1

配列の形式が明確ではありません

オプションA

$array = array("1 red dog", "2 orange cat", "3 yellow canary");
$array = array_map(function($var){  $var = explode(" ", $var,2) ; return array_shift($var); }, $array);
var_dump($array);

オプションB

$array = array("1" =>"red dog", "2" =>"orange cat", "3" =>"yellow canary");
$array = array_keys($array);
var_dump($array);

出力

array
  0 => string '1' (length=1)
  1 => string '2' (length=1)
  2 => string '3' (length=1)
于 2012-10-06T15:50:45.033 に答える