Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组根据值中的前置文本进行筛选_Php_Arrays_Filtering - Fatal编程技术网

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答案。