相关疑难解决方法(0)

如何在PHP中将多维数组"扁平化"为简单数组?

这可能是初学者的问题,但我已经阅读了较长时间的文档,我找不到任何解决方案.我以为我可以为每个维度使用implode然后将这些字符串重新组合在一起str_split以创建新的简单数组.但是我永远不知道连接模式是否也不在值中,因此在执行之后str_split我的原始值可能会中断.

combine($array1, $array2)对于多维数组中的数组是否有类似的东西?

php arrays multidimensional-array

73
推荐指数
10
解决办法
11万
查看次数

为什么array_diff()给Array提供字符串转换错误?

我得到以下行的数组到字符串转换错误:

$diff = array_diff($stockist, $arr);
Run Code Online (Sandbox Code Playgroud)

$arr是一个从JSON文件解码的数组.使用该is_array()函数,我能够验证两个参数都是数组.有人能指出我的问题

$stockist = array();
while (!feof($file_handle)) {

    $line_of_text = fgetcsv($file_handle);
    $query = "SELECT * FROM reorderchart WHERE medicine = '"
        . trim($line_of_text[3])
        . "' ORDER BY medicine";
    $result = mysql_query($query);

    if (trim($line_of_text[2]) - trim($line_of_text[1]) <= 0) {

        while ($row = mysql_fetch_array($result)) {

            $file = "results.json";
            $arr = json_decode(file_get_contents($file),true);
            $pharmacy = trim($row['Medicine']);

            if (isset($stockist[$pharmacy])) {

                $medicine = $stockist[$pharmacy];
                $medicine[] = trim($row['Stockist']);
                $stockist[$pharmacy] = $medicine;

            } else {

                $medicine = array();
                $medicine[] = …
Run Code Online (Sandbox Code Playgroud)

php arrays multidimensional-array array-difference

52
推荐指数
5
解决办法
3万
查看次数

将多维数组转换为一维数组

我已经在这一段时间里敲打了一会儿.

我有这个多维数组:

Array
(
    [0] => Array
        (
            [0] => foo
            [1] => bar
            [2] => hello
        )

    [1] => Array
        (
            [0] => world
            [1] => love
        )

    [2] => Array
        (
            [0] => stack
            [1] => overflow
            [2] => yep
            [3] => man
        )
Run Code Online (Sandbox Code Playgroud)

我需要得到这个:

Array
(
    [0] => foo
    [1] => bar
    [2] => hello
    [3] => world
    [4] => love
    [5] => stack
    [6] => overflow
    [7] => yep
    [8] => man
)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

我发现的所有其他解决方案都解决了具有不同键的多维数组.我的数组只使用简单的数字键.

php arrays multidimensional-array

50
推荐指数
4
解决办法
6万
查看次数

使用implode时,数组到字符串转换错误

我对我正在陈述的错误感到困惑 Array to string conversion

我很困惑的原因是我正在努力做到这一点,将数组转换为字符串,implode根据手册应该允许我将我的数组转换为字符串.那我为什么会收到错误?

var $matches是一个数组.$error_c是我想要存储字符串的var.

print_r($matches); // prints the array correctly
$error_c = implode(',', $matches);
echo $error_c;
Run Code Online (Sandbox Code Playgroud)

输出简单array并给出:

Notice: Array to string conversion in ...
Run Code Online (Sandbox Code Playgroud)

手册说明了implode — Join array elements with a string为什么我尝试这样做时会出错?

编辑:这是我得到的输出 $matches

Array ( [0] => Array ( [0] => C [1] => E [2] => R [3] => R [4] => O [5] => R [6] => C [7] => O [8] => N …
Run Code Online (Sandbox Code Playgroud)

php arrays string implode

20
推荐指数
3
解决办法
3万
查看次数

无法使用字符串键解压缩数组

FATAL ERROR未捕获错误:无法使用字符串键解压缩数组

我知道我可以简单地运行该方法fetch()两次并通过['q'],['bind']但我正在尝试使用new ...来解压缩值.我想传递这样的值:

(string) SQL, (Array) Bind Values
Run Code Online (Sandbox Code Playgroud)

但我认为它试图解包绑定值数组以及方法中的响应数组fetch().是否可以解压缩这个数组(看起来像这样:)

array(2) { 
    ["q"]=> string(7) "example" 
    ["bind"]=> array(1) {
        ["example"]=> string(3) "one"
    }
}
Run Code Online (Sandbox Code Playgroud)

这是整个代码,如果你需要看看它们如何组合在一起:

class ModelController {
    public static function execute($sql, $vals) {
        var_dump($vals);
    }
}

class ModelContainer {

    private $queries = [];

    public function add_model(Model $model, $name) {
        $this->queries[$name] = $model;
        return $this;
    }

    public function exec_all() {
        foreach($this->queries as $q) {
            ModelController::execute(...$q->fetch());
        }
    }

    public function exec($name) {

    } …
Run Code Online (Sandbox Code Playgroud)

php arrays

14
推荐指数
3
解决办法
8409
查看次数

如何使用PHP将多维数组转换为单个数组?

实现数据库查询后,我将获得下面的多维数组.

二维数组

Array
(
    [0] => Array
        (
            [t1] => test1
        )

    [1] => Array
        (
            [t2] => test2
        )

    [2] => Array
        (
            [t3] => test3
        )

    [3] => Array
        (
            [t4] => test4
        )

    [4] => Array
        (
            [t5] => test5
        )

)
Run Code Online (Sandbox Code Playgroud)

但我想将其转换为单维数组,如下面的格式.

一维数组

Array (
    t1 => test1
    t2 => test2
    t3 => test3
    t4 => test4
    t5 => test5
)
Run Code Online (Sandbox Code Playgroud)

请帮我这样做

php arrays multidimensional-array array-reduce

13
推荐指数
3
解决办法
4681
查看次数

PHP foreach()与数组中的数组?

我想在数组中的每个元素上调用一个函数.使用a显然很容易foreach(),但是当我开始分解时,数组包含数组.有人可以帮我解决一个函数,该函数将为数组中的一组数组中的每个键 - >值对执行一些代码.理论上,深度可以是无限的,但如果递归无法工作,那么好的限制将是3次迭代(数组中的数组).

一个示例数组将是从$ _POST中获取的数组:

Array
(
    [languages] => Array
    (
        [0] => php
        [1] => mysql
        [2] => inglip
    )

    [rates] => Array
    (
        [incall] => Array
        (
            [1hr] => 10
        )

        [outcall] => Array
        (
            [1hr] => 10
        )

    )
)

只是为了确保,我想要做的是运行一段代码(一个函数),它传递给数组结构中的每个"末端节点",所以在上面的例子中,当...时会调用它.

[0] => php
[1] => mysql
[2] => inglip
[1hr] => 10
[1hr] => 10

......被发现了.

谢谢你的帮助,

詹姆士

php arrays iteration

12
推荐指数
3
解决办法
2万
查看次数

如何从二维数组中提取所有二级值(叶节点)并用逗号连接?

如何从我的数组中获取值列表:

[data] => Array
        (
            [5] => Array
                (
                    [0] => 19
                    [1] => 18
                    [2] => 20
                )

            [6] => Array
                (
                    [0] => 28
                )

        )
Run Code Online (Sandbox Code Playgroud)

预期的输出结果字符串将是:19,18,20,28

谢谢!

php multidimensional-array

9
推荐指数
1
解决办法
5873
查看次数

透明地展平阵列

阅读这个问题由几个数组合并和分组我得到了以下想法:当使用多级数组时,可能重复键,有一个函数可以迭代这样的数组,因为它是平的,就像

foreach(flatten($deepArray) as $key => $val)....
Run Code Online (Sandbox Code Playgroud)

任何想法怎么写flatten()?有没有标准的解决方案?

(注意,flatten()由于重复键不能简单地返回一个新数组).

php arrays multidimensional-array

8
推荐指数
1
解决办法
1210
查看次数

删除数组中的第一级标识符

我认为这已经提前了,但无法找到任何答案.如果已经回答,请通过链接指向正确的方向.

我有一个数组,我不想删除第一级标识符.我认为这有一个功能吗?

它是如何形成的例子:

[0] => Array
        (
            [8] => Röd
        )

[1] => Array
        (
            [8] => Blå
        )

[2] => Array
        (
            [6] => Bobo
        )

[3] => Array
        (
            [8] => Grön
        )

[4] => Array
        (
            [7] => Sten
        )

[5] => Array
        (
            [8] => Vit
        )

[6] => Array
        (
            [7] => Guld
        )

[7] => Array
        (
            [6] => Lyxig
        )
Run Code Online (Sandbox Code Playgroud)

我想要的是

[8] => Röd
[8] => Blå
[6] => Bobo
[8] => Grön …
Run Code Online (Sandbox Code Playgroud)

php arrays identifier levels

8
推荐指数
4
解决办法
2万
查看次数