我如何获得指定的数组值
Posted
技术标签:
【中文标题】我如何获得指定的数组值【英文标题】:How i get the specified array values 【发布时间】:2017-12-08 13:36:04 【问题描述】:您好,我的脚本中有这个数组。这是我的数组
Array
(
[0] => Array
(
[0] => BACK
[1] => PACK
[2] => BBP160800103
[3] =>
[4] => G086-1
[5] => 8#.JPG
)
[2] => Array
(
[0] => BACKPACK
[1] => BBP160500010
[2] => G114-3#1.JPG
)
[3] => Array
(
[0] => WSL160800024-WSL160800025
[1] => L83-5.JPG
)
[4] => Array
(
[0] => IA041017
[1] => L83-5.JPG
)
)
我从这个脚本中得到了数组。我正在使用 codeigniter 3
public function generatenewname()
$this->load->helper('directory');
$map = directory_map( './assets/file_upload/md/temp/',FALSE, TRUE);
for($x=0;$x<count($map);$x++)
$newest[$x] = explode(" ",$map[$x]);
echo "<pre>";print_r($newest);
所以从上面的数组中我想得到这个值BBP160800103,BBP160500010,WSL160800024,WSL160800025
和IA041017
我怎样才能实现它?
--更新--
我从我的脚本中做了一些更新(我正在尝试)
public function generatenewname()
$this->load->helper('directory');
$map = directory_map( './assets/file_upload/md/temp/',FALSE, TRUE);
for($x=0;$x<count($map);$x++)
$newest[$x] = explode(" ",$map[$x]);
for($y=0;$y<count($newest[$x]);$y++)
if(strlen($newest[$x][$y]) >= 7)
$file[] =$newest[$x][$y];
for($x=0;$x<count($file);$x++)
echo $x.' '. $file[$x].'<br>';
对于我上面的脚本,我在我的列表中得到了这个
[n] BBP160800103
[n] BBP160500010
[n] WSL160800024-WSL160800025
我想实现它
[n] BBP160800103
[n] BBP160500010
[n] WSL160800024
[n] WSL160800025
【问题讨论】:
【参考方案1】:您可以根据起始键匹配模式。
$array = [
['BACK', 'PACK', 'BBP160800103', '', 'G086-1', '8#.JPG'],
['BACKPACK', 'BBP160500010', 'G114-3#1.JPG'],
['WSL160800024-WSL160800025', 'L83-5.JPG'],
['IA041017', 'L83-5.JPG']
];
$patterns = ['(BBP\w+)', '(WSL\w+)', '(IA\w+)'];
$codes = [];
$matcher = '/' . implode($patterns, '|') . '/';
foreach ($array as $arr)
array_map(function ($value) use ($matcher, &$codes)
preg_match_all($matcher, $value, $matches);
foreach($matches as $match)
$codes = array_merge(array_filter($match), $codes);
, $arr);
print_r(array_unique($codes));
// output
Array
(
[0] => IA041017
[2] => WSL160800024
[3] => WSL160800025
[6] => BBP160500010
[8] => BBP160800103
)
【讨论】:
当我添加另一个$patterns
时,它运行缓慢。抱歉英语不好【参考方案2】:
将您的最终数组传递给此函数以实现您的结果。
arraymakking($file);//your array
function arraymakking($arr)
foreach($arr as $key=>$val)
if(strpos($val,'-') !== false)
$res=explode('-',$val);
unset($arr[$key]);
$result=array_merge($arr,$res);
return $result;
【讨论】:
你检查了吗? @YVS1102 我正在分解$val
并将其存储到$res
变量中。@YVS1102
是的,我的错。谢谢【参考方案3】:
试试这个:
echo $array[0][3]; //BBP160800103
echo $array[2][1]; //BBP160500010
等等。请参阅编号索引。你最好用命名索引创建你的数组。像这样:
$array = array("Array1"=>array("key1"=>"val1","key2"=>"val2"),"Array2"=>(array("2ndKey1"=>"val1", "2ndKey2"=>"val2));
【讨论】:
以上是关于我如何获得指定的数组值的主要内容,如果未能解决你的问题,请参考以下文章
如何从一个数组中查找指定的元素,并返回这个元素在数组中的位置