PHP-如何在只有一个可靠的前置字符串的多维数组中重新排序数据?

PHP-如何在只有一个可靠的前置字符串的多维数组中重新排序数据?,php,Php,正在向我传递不一致的数据。问题在于,$data\u array的各行并非以相同的顺序一致,但每个行的值前面都有一个可靠的“text:” 每行包含大约120个数据元素。我只需要这些元素中的24个 我需要的一个元素也可能遗漏了,比如“成本” (我使用的是php 5.4版) --任务: 使用$order_数组,通过将每个“行”中的数据重新排序为与$order_数组相同的顺序,创建一个新的$data_数组 如果行中缺少元素,请插入“NA” 一旦元素的顺序正确,“文本”就不再需要了 $order_arra

正在向我传递不一致的数据。问题在于,
$data\u array
的各行并非以相同的顺序一致,但每个行的值前面都有一个可靠的“text:”

每行包含大约120个数据元素。我只需要这些元素中的24个

我需要的一个元素也可能遗漏了,比如“成本”

(我使用的是php 5.4版)
--任务:

使用$order_数组,通过将每个“行”中的数据重新排序为与$order_数组相同的顺序,创建一个新的$data_数组

如果行中缺少元素,请插入“NA”

一旦元素的顺序正确,“文本”就不再需要了

$order_array = array("price", "cost", "vol", "eps")
$data_array = Array (
    $one = Array ("cost":43.40, "vol":44000,   "eps":1.27,   "price":65.00),
    $two = Array ("eps":5.14,   "price":33.14, "vol":657000),
    $thr = Array ("vol":650000, "cost":66.67,  "eps":1.33,   "price":44.31),
);
结果输出应按以下顺序显示数据:(“价格”、“成本”、“体积”、“每股收益”)


您可以在此处查看原始传入数据:

答案来自:安德烈亚斯

在第二个参数为true的字符串上使用json_decode,将得到一个关联数组作为输出

$url = "https://api.iextrading.com/1.0/stock/market/batch?
symbols=aapl,tsla,ge&types=quote,earnings,stats";
$arr = json_decode(file_get_contents($url), true);
Var_dump($arr);
看这里; 我从页面复制了字符串并将其作为$str发布。


需要两个步骤。

为什么我强烈感觉这是一个代码战争问题?首先使用
aray\u filter
制作格式化子数组,然后使用
uasort
创建对父数组排序的函数。至少,你可以自己尝试一下?这将消除一些语法错误,并为我们提供帮助的起点。@KIKOSoftware示例代码是通用的。这对于来自codewars等网站的问题来说很常见。这样,您就可以用自己喜欢的语言提供答案。不仅仅是PHP。这可能就是语法错误的原因。这不是测试。我正在寻找如何处理这个问题的想法。谢谢bat03:aray_过滤器和uasort都是有用的想法。我可能还需要熟悉ARRAY\u FILTER\u USE\u KEY。Paul,谢谢你的模型代码。我可能最终能让它工作。我首先需要将“:”冒号转换为“=>”。我认为这行有一个输入错误:if(isset($data[$key]]){。我想应该结束:$key][]){我以前从未使用过嵌套数组。我感谢您的努力。
$data_array_new = [];
foreach ($data_array as $index => $data) {
    $data_array_new[$index] = [];
    foreach ($order_array as $key) {
        if (isset($data[$key])) {
            $data_array_new[$index][] = $data[$key];
        } else {
            $data_array_new[$index][] = 'NA';
        }
    }
}
$url = "https://api.iextrading.com/1.0/stock/market/batch?
symbols=aapl,tsla,ge&types=quote,earnings,stats";
$arr = json_decode(file_get_contents($url), true);
Var_dump($arr);