我有一个多维数组,每个数组都有一个特定的索引 更具体地说,我有一个唯一的ip作为索引和条目的值。
我想从每个数组中递归地提取1个值,而不是从同一个IP中提取2个值,并将这些值显示为批处理。我必须展示整套装置。
为了更清楚一点,我必须根据IP唯一性从整个集合中提取值,每个批处理必须包含5个值,并且我必须显示列表中的每个值。 IP的数量永远不是已知值。
例如,如果我有这个数组:
Array
(
[ip] => Array
(
[0] => entry01
[1] => entery02
[2] => entery03
[3] => entery04
)
[ip] => Array
(
[0] => entery05
)
[ip] => Array
(
[0] => entery06
)
)
我的结局应该是这样的:
entery01, entery05, entery06
现在请注意,我们在第一个数组中仍然有值entery02-04,这意味着一旦提取完成,我必须得到它们。
答案 0 :(得分:0)
无法使用关联数组 - 您只能拥有一个ip
键。
修改:假设ip
是占位符,请执行以下操作:使用in_array()
并添加到结果数组(如果它未评估为true
。
<?php
$begin = array(
0 => array( 'entry01', 'entry02', 'entry03' ),
1 => array( 'entry01', 'entry04' ),
2 => array( 'entry02', 'entry07' )
);
$results = array();
foreach ( $begin as $k1 => $subarr ) {
$count = 0;
foreach ( $subarr as $k2 => $entry ) {
if ( ! in_array( $entry, $results ) && $count < 1 ) {
$results[] = $entry;
$count++;
}
}
}
var_dump( $results );
?>
$ php unique_items.php
array(3) {
[0]=>
string(7) "entry01"
[1]=>
string(7) "entry04"
[2]=>
string(7) "entry02"
}
答案 1 :(得分:0)
$events = array();
foreach($data_array as $ip=>$evnt_array){
foreach($evnt_array as $event){
if(!in_array($event,$events)){
$events[] = $event
}
}
}
每条评论
$events = array();
foreach($data_array as $ip=>$evnt_array){
foreach($evnt_array as $event){
if(!in_array($event,$events)){
$events[] = $event
break;
}else{
continue;
}
}
}
在这个例子中,我们只取第一个元素,如果它是唯一的,然后突破内部循环。如果第一个元素已经编入索引,请继续执行下一个元素并重复检查。
答案 2 :(得分:-1)
我认为这样的事情应该有效
$myInputArray = // your array up there
$myOutputArray = array();
foreach($myInputArray as $ip) {
foreach($ip as $value) {
if(!in_array($value,$myOutputArray)){
$myOutputArray[] = $value;
}
break;
}
}
编辑:对不起,我错过了这一行:
我想从每个数组中递归地提取1个值,而不是从同一个IP中提取2个值,并将这些值显示为批处理。我必须展示整套装置。
回答更新
答案 3 :(得分:-1)
我认为你正在寻找一个foreach循环。这只是抓住了第一个。
foreach ($arrayName as $ip){
echo $ip[0];
}
我错过了一些问题。上述部分不再是我心中的有效回应。我认为一个关联数组的密钥是ip,而值是ip会起作用。检查数组中是否有ip的密钥(如果它不存在)如果存在则添加它从数组中删除该密钥。如果数组的长度是5,那么你可以停止。