2

接頭辞「#」を使用して、特定の配列キーに実際の値ではなくメタデータが含まれていることを示すDrupalフォーム配列があります。キーが「#」で始まるものを除くすべての配列要素をループするにはどうすればよいですか?

4

3 に答える 3

4
foreach( $array as $key => $value ) {
    if( $key[0] === "#" ) {
        continue;
    }

    //Do work
}
于 2012-06-15T13:37:23.213 に答える
2

continue現在のキーが。で始まる場合は、ループ内の次の反復にスキップするために使用できます#。最初の文字を取得する1つの方法は、を使用することsubstr()です。

foreach ($array as $key => $value) {
    if (substr($key, 0, 1) === '#') continue;
    //do stuff
}
于 2012-06-15T13:37:48.230 に答える
0

これを試して:

<?php
function deleteElements(&$v, $k) {
   global $newArray;

   if(substr($k, 0, 1) !== '#') {
      $newArray[$k] = $v;
   }
}

$arr = array('as'=>'Test','#df'=>'this will not come','gh'=>'no test','#e'=>'again!');
$newArray = array(); // this will contain non-metadata keys
array_walk( $arr, 'deleteElements' );

//$newArrayis now..
$newArray = array('as'=>'Test','gh'=>'no test');
?>

お役に立てれば。

于 2012-06-15T13:43:46.330 に答える