我有一个向数据库添加项的脚本。
目前我正在创建一个数组,如下所示:
foreach(blah as $album){
$add[] = array('album' => $album['name'],
'test' => $album['test']
);
} // end foreach
相册名称并不总是唯一的,$album['test']
可以是随机文本(稍后使用(,也可以是"FALSE"(当我说FALSE时,我的意思是,单词FALSE,用文本字母拼写(
我需要一个函数来以某种方式搜索数组,并比较名称和测试值。。。每个专辑名称可能有几个条目,带有几个不同的随机文本值,其中一个表示FALSE。如果有一个数组条目的测试值设置为FALSE,那么它将删除所有其他包含的具有相同相册名称的数组。。。
所以这个:
array(array('album' => 'album_name1', 'test' => 'xqus8n4n'),
array('album' => 'album_name1', 'test' => 'FALSE'),
array('album' => 'album_name1', 'test' => 'jdh4dhdk'),
array('album' => 'album_name2', 'test' => 'hdis8ebk'),
array('album' => 'album_name2', 'test' => 'hisb8bs7'),
array('album' => 'album_name2', 'test' => 'FALSE'),
array('album' => 'album_name3', 'test' => 'yek98abk'),
array('album' => 'album_name3', 'test' => '8iksh2q7')
);
变为:
array(array('album' => 'album_name1', 'test' => 'FALSE'),
array('album' => 'album_name2', 'test' => 'FALSE'),
array('album' => 'album_name3', 'test' => 'yek98abk'),
array('album' => 'album_name3', 'test' => '8iksh2q7')
);
我希望这是有道理的,因为除非你知道我的整个剧本结构,否则它可能会显得有点困惑,这就是为什么我提供了这么多信息。
$multiarray = array(
array('album' => 'album_name1', 'test' => 'xqus8n4n'),
array('album' => 'album_name1', 'test' => 'FALSE'),
array('album' => 'album_name1', 'test' => 'jdh4dhdk'),
array('album' => 'album_name2', 'test' => 'hdis8ebk'),
array('album' => 'album_name2', 'test' => 'hisb8bs7'),
array('album' => 'album_name2', 'test' => 'FALSE'),
array('album' => 'album_name3', 'test' => 'yek98abk'),
array('album' => 'album_name3', 'test' => '8iksh2q7')
);
$keysToRemove = array( );
// Go and find all the FALSE values and which albums they belong to
foreach ( $multiarray as $album ) {
if ( in_array( 'FALSE', $album ) ) {
$keysToRemove[] = $album['album'];
}
}
// Remove all instances of the albums that had FALSE values
// except the ones that had the word FALSE (we keep those :p )
for( $i = 0; $i < count($multiarray); $i++ ) {
if ( ( in_array( $multiarray[$i]['album'], $keysToRemove ) ) && ( $multiarray[$i]['test'] != 'FALSE' ) ){
unset( $multiarray[$i] );
}
}
// reset keys so that they are numerical again.
$multiarray = array_values(array_filter($multiarray));
print_r( $multiarray );
给出以下结果:
Array (
[0] => Array ( [album] => album_name1 [test] => FALSE )
[1] => Array ( [album] => album_name2 [test] => FALSE )
[2] => Array ( [album] => album_name3 [test] => yek98abk )
[3] => Array ( [album] => album_name3 [test] => 8iksh2q7 )
)
使用php函数array_key_exists((
foreach($album as $alb){
if (array_key_exists('FALSE', $alb)) {
// Remove other array keys or save into new array
}
} // end foreach
这提供了您想要的输出
function array_searches($item,$key,$keys,$value){
if($key[$keys]==$value){
return true;
}
return false;
}
$array= array(
array('album' => 'album_name1', 'test' => 'xqus8n4n'),
array('album' => 'album_name1', 'test' => 'FALSE'),
array('album' => 'album_name1', 'test' => 'jdh4dhdk'),
array('album' => 'album_name2', 'test' => 'hdis8ebk'),
array('album' => 'album_name2', 'test' => 'hisb8bs7'),
array('album' => 'album_name2', 'test' => 'FALSE'),
array('album' => 'album_name3', 'test' => 'FALdsfSE'),
array('album' => 'album_name3', 'test' => 'FALsdfSE'),
);
$i=0;
function custom_op($array){
$new_array=array();
foreach ($array as $key=>$value){
if(array_custom_search($key,$value,'test','FALSE')){
$new_array[]=$value;
foreach($array as $key1=>$value1){
if(array_search($key1,$value1,'album',$value['album'])){
unset($array[$key1]);//unset the array value where 'test' is false
}
}
}
}
foreach ($new_array as $key=> $value){
$array[]=$value;
}
echo "<pre>asdf";
print_r($array);
}