PHP数组根据值中的前置文本进行筛选
我有一个如下的数组PHP数组根据值中的前置文本进行筛选,php,arrays,filtering,Php,Arrays,Filtering,我有一个如下的数组 Array ( [0] => country-indonesia [1] => country-myanmar [2] => access-is_airport [3] => heritage-is_seagypsy ) 从该数组中,我只想为[country]、[access]、[heritage]创建单独的数组 因此,我必须在“-”之前通过文本检查数组值。我不知道怎么做。所以我不能在这里应用代码。我只有PHP中的数组
Array
(
[0] => country-indonesia
[1] => country-myanmar
[2] => access-is_airport
[3] => heritage-is_seagypsy
)
从该数组中,我只想为[country]、[access]、[heritage]创建单独的数组
因此,我必须在“-”之前通过文本检查数组值。我不知道怎么做。所以我不能在这里应用代码。我只有PHP中的数组您需要PHP的
strpos()
函数。
只需循环遍历数组的每个元素,然后尝试以下操作:
if( strpos($array[$i], "heritage") != false )
{
// Found heritage, do something with it
}
(我在给宝宝喂奶时用手机写了一个粗略的例子,可能有拼写错误,但这是你需要的基本信息)
进一步阅读此处:您需要PHP的
strpos()
函数。
只需循环遍历数组的每个元素,然后尝试以下操作:
if( strpos($array[$i], "heritage") != false )
{
// Found heritage, do something with it
}
(我在给宝宝喂奶时用手机写了一个粗略的例子,可能有拼写错误,但这是你需要的基本信息)
请在此处进一步阅读:您可以使用
分解
和in_array
函数来完成此操作
<?php
$arr = ["country-indonesia","country-myanmar","access-is_airport","heritage-is_seagypsy"];
$newArr = array();
foreach($arr as $k=> $val){
$valArr = explode("-", $val);
if(!in_array($valArr[0], $newArr)){
$newArr[] = $valArr[0];
}
}
print_r($newArr);
?>
您可以通过使用
分解
和in_array
函数来实现
<?php
$arr = ["country-indonesia","country-myanmar","access-is_airport","heritage-is_seagypsy"];
$newArr = array();
foreach($arr as $k=> $val){
$valArr = explode("-", $val);
if(!in_array($valArr[0], $newArr)){
$newArr[] = $valArr[0];
}
}
print_r($newArr);
?>
如果您只想获得特定类型的答案,请选择修改后的答案
<?php
$arr = [
'country-indonesia',
'country-myanmar',
'access-is_airport',
'heritage-is_seagypsy',
];
$new_array = [];
$types = ['country', 'heritage', 'access'];
foreach ($arr as $element) {
$fac = explode('-', $element);
foreach ($types as $type) {
if ($fac[0] === $type) {
$new_array[$type][] = $fac[1];
}
}
}
$country = $new_array['country'];
$access = $new_array['access'];
$heritage = $new_array['heritage'];
var_dump($new_array);
如果您只想获取特定类型,请选择修改后的答案
<?php
$arr = [
'country-indonesia',
'country-myanmar',
'access-is_airport',
'heritage-is_seagypsy',
];
$new_array = [];
$types = ['country', 'heritage', 'access'];
foreach ($arr as $element) {
$fac = explode('-', $element);
foreach ($types as $type) {
if ($fac[0] === $type) {
$new_array[$type][] = $fac[1];
}
}
}
$country = $new_array['country'];
$access = $new_array['access'];
$heritage = $new_array['heritage'];
var_dump($new_array);
使用array\u walk
<?php
$arr = [
'country-indonesia',
'country-myanmar',
'access-is_airport',
'heritage-is_seagypsy',
];
$new_array = [];
array_walk($arr, function($item) use (&$new_array){
//if(false === strpos($item, '-')) return;
list($key,$value) = explode('-', $item, 2);
$new_array[$key][] = $value;
});
print_r($new_array);
如果不希望出现空条目和重复条目:
<?php
$arr = [
'country-indonesia',
'country-myanmar',
'access-is_airport',
'heritage-is_seagypsy',
];
$new_array = [];
array_walk($arr, function($item) use (&$new_array){
if(false === strpos($item, '-')) return;
list($key,$value) = explode('-', $item, 2);
if(empty($value) || array_key_exists($key, $new_array) && in_array($value, $new_array[$key])) return;
$new_array[$key][] = $value;
});
print_r($new_array);
使用array\u walk
<?php
$arr = [
'country-indonesia',
'country-myanmar',
'access-is_airport',
'heritage-is_seagypsy',
];
$new_array = [];
array_walk($arr, function($item) use (&$new_array){
//if(false === strpos($item, '-')) return;
list($key,$value) = explode('-', $item, 2);
$new_array[$key][] = $value;
});
print_r($new_array);
如果不希望出现空条目和重复条目:
<?php
$arr = [
'country-indonesia',
'country-myanmar',
'access-is_airport',
'heritage-is_seagypsy',
];
$new_array = [];
array_walk($arr, function($item) use (&$new_array){
if(false === strpos($item, '-')) return;
list($key,$value) = explode('-', $item, 2);
if(empty($value) || array_key_exists($key, $new_array) && in_array($value, $new_array[$key])) return;
$new_array[$key][] = $value;
});
print_r($new_array);
//首先让我们设置一个与数组相等的变量,以便于使用,即
//还要创建一个新的空数组来保存过滤后的值
$countryArray=array();
$accessArray=array();
$GEARRAY=数组();
$oldArray=Array(印度尼西亚国、缅甸国、access-is_机场、heritage-is_seagypsy);
//通过阵列的下一个循环,即
对于($x=0;$x
//我相信这应该行得通:干杯希望//首先让我们设置一个与数组相等的变量,以便于使用
//还要创建一个新的空数组来保存过滤后的值
$countryArray=array();
$accessArray=array();
$GEARRAY=数组();
$oldArray=Array(印度尼西亚国、缅甸国、access-is_机场、heritage-is_seagypsy);
//通过阵列的下一个循环,即
对于($x=0;$x
//我相信这应该行得通:干杯希望在循环内通过explode(“-”,$val)
进行爆炸。在循环内通过explode(“-”,$val)
进行爆炸。谢谢你的回答。也许我解释不清楚。我从你的代码中得到了一个带有pre值的数组。我想设置这样的数组$country=array([0]=>印度尼西亚[1]=>泰国)@Lemon:那么我推荐Kerkouch答案。谢谢你的回答。也许我解释不清楚。我从你的代码中得到了一个带有pre值的数组。我想像这样设置数组$country=array([0]=>印度尼西亚[1]=>泰国)@Lemon:然后我推荐Kerkouch答案。