找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 80|回复: 7

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

[复制链接]

253

主题

426

回帖

1635

积分

金牌会员

积分
1635
发表于 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);
}
回复

使用道具 举报

14

主题

96

回帖

248

积分

中级会员

积分
248
发表于 2019-1-25 17:05:49 | 显示全部楼层
回复

使用道具 举报

253

主题

426

回帖

1635

积分

金牌会员

积分
1635
 楼主| 发表于 2019-1-25 17:06:10 | 显示全部楼层
不知道深度只能递归,好麻烦
回复

使用道具 举报

283

主题

4444

回帖

9871

积分

论坛元老

积分
9871
发表于 2019-1-25 17:05:00 | 显示全部楼层
[ol]
  • /**
  • * 数组扁平化
  • * @param $arr
  • * @return array
  • */
  • function getArrayStr($arr)
  • {
  •     // 不是数组直接返回
  •     if (!is_array($arr)) {
  •         return [$arr];
  •     }
  •     $arr2 = [];
  •     // 是数组就遍历
  •     foreach ($arr as $item) {
  •         if (!is_array($item)) {
  •             $arr2[] = $item;
  •         }else{
  •             $arr2 = array_merge($arr2, getArrayStr($item));
  •         }
  •     }
  •     return $arr2;
  • }
  • var_dump(getArrayStr([
  •     "外婆",
  •     [
  •         "爷爷",
  •         "奶奶",
  •         [
  •             "大爷",
  •             "大妈",
  •             [
  •                 "陌生人1",
  •                 "陌生人2",
  •             ]
  •         ]
  •     ]
  • ]));
  • var_dump(getArrayStr([
  •     [
  •         [
  •             [
  •                 "你自己",
  •             ]
  •         ]
  •     ]
  • ]));[/ol]复制代码

    完善了一下@Jan 的思路

    [ol]
  • # php a.php
  • array(7) {
  •   [0]=>
  •   string(6) "外婆"
  •   [1]=>
  •   string(6) "爷爷"
  •   [2]=>
  •   string(6) "奶奶"
  •   [3]=>
  •   string(6) "大爷"
  •   [4]=>
  •   string(6) "大妈"
  •   [5]=>
  •   string(10) "陌生人1"
  •   [6]=>
  •   string(10) "陌生人2"
  • }
  • array(1) {
  •   [0]=>
  •   string(9) "你自己"
  • }
  • [/ol]复制代码
  • 回复

    使用道具 举报

    169

    主题

    2101

    回帖

    4769

    积分

    论坛元老

    积分
    4769
    发表于 2019-1-25 17:06:23 | 显示全部楼层

    hdown 发表于 2019-1-25 17:25

    完善了一下@Jan 的思路

    谢谢。
    回复

    使用道具 举报

    253

    主题

    426

    回帖

    1635

    积分

    金牌会员

    积分
    1635
     楼主| 发表于 2019-1-25 17:25:52 | 显示全部楼层
    function functionName($strs) {     if (is_array($strs)) {         // code         // $strs = .....;          functionName($strs[0]);     }     return $strs; }
    回复

    使用道具 举报

    3

    主题

    24

    回帖

    81

    积分

    注册会员

    积分
    81
    发表于 2019-1-25 17:50:02 | 显示全部楼层
    爪机,排版乱了
    回复

    使用道具 举报

    3

    主题

    24

    回帖

    81

    积分

    注册会员

    积分
    81
    发表于 2019-1-25 17:25:00 | 显示全部楼层
    function functionName($strs) {     if (is_array($strs))  functionName($strs[0]);     return $strs; }

      递归最讨厌了,一不小心就成死循环了。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-4-29 01:07 , Processed in 0.017277 second(s), 3 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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