全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 704|回复: 10

问一个php数组的问题。。。

[复制链接]
发表于 2019-1-25 17:04:19 | 显示全部楼层 |阅读模式
本帖最后由 yaoruisheng 于 2019-1-25 19:33 编辑

$a => Array
                        (
                            [3] => Array
                                (
                                    [0] => 1.txt
                                )

                        )



如何将类似上面的数组 转换成 字符串?

数组深度未知,但是转换的结果是最深那层的键值。

我找到一个方法。

while(is_array($a)){
$a=$a[0];
}

------------------------------

while(is_array($a)){
$a=reset($a);
}
发表于 2019-1-25 17:05:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2019-1-25 17:06:10 | 显示全部楼层

怎么搞?
发表于 2019-1-25 17:06:23 | 显示全部楼层
不知道深度只能递归,好麻烦
发表于 2019-1-25 17:25:52 | 显示全部楼层
  1. /**
  2. * 数组扁平化
  3. * @param $arr
  4. * @return array
  5. */
  6. function getArrayStr($arr)
  7. {

  8.     // 不是数组直接返回
  9.     if (!is_array($arr)) {
  10.         return [$arr];
  11.     }

  12.     $arr2 = [];
  13.     // 是数组就遍历
  14.     foreach ($arr as $item) {
  15.         if (!is_array($item)) {
  16.             $arr2[] = $item;
  17.         }else{
  18.             $arr2 = array_merge($arr2, getArrayStr($item));
  19.         }

  20.     }
  21.     return $arr2;
  22. }


  23. var_dump(getArrayStr([
  24.     "外婆",
  25.     [
  26.         "爷爷",
  27.         "奶奶",
  28.         [
  29.             "大爷",
  30.             "大妈",
  31.             [
  32.                 "陌生人1",
  33.                 "陌生人2",
  34.             ]
  35.         ]
  36.     ]
  37. ]));


  38. var_dump(getArrayStr([
  39.     [
  40.         [
  41.             [
  42.                 "你自己",
  43.             ]
  44.         ]
  45.     ]
  46. ]));
复制代码


完善了一下@Jan 的思路


  1. # php a.php
  2. array(7) {
  3.   [0]=>
  4.   string(6) "外婆"
  5.   [1]=>
  6.   string(6) "爷爷"
  7.   [2]=>
  8.   string(6) "奶奶"
  9.   [3]=>
  10.   string(6) "大爷"
  11.   [4]=>
  12.   string(6) "大妈"
  13.   [5]=>
  14.   string(10) "陌生人1"
  15.   [6]=>
  16.   string(10) "陌生人2"
  17. }
  18. array(1) {
  19.   [0]=>
  20.   string(9) "你自己"
  21. }
复制代码
 楼主| 发表于 2019-1-25 17:50:02 | 显示全部楼层
hdown 发表于 2019-1-25 17:25
完善了一下@Jan 的思路

谢谢。
发表于 2019-1-25 20:21:40 来自手机 | 显示全部楼层
function functionName($strs) {     if (is_array($strs)) {         // code         // $strs = .....;          functionName($strs[0]);     }     return $strs; }
发表于 2019-1-25 20:24:12 来自手机 | 显示全部楼层
爪机,排版乱了
发表于 2019-1-25 20:25:18 来自手机 | 显示全部楼层
function functionName($strs) {     if (is_array($strs))  functionName($strs[0]);     return $strs; }
发表于 2019-1-25 21:22:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2026-3-24 05:10 , Processed in 0.064651 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表