我是新来的PHP,一直在使用社区和答案在这里,真正帮助我的一个小项目,我正在工作,所以提前感谢大家的帮助到目前为止!
我正在提取保存在格式不良的文本文件/提要中的大量信息,修剪特殊字符的内容,然后使用str_replace
查找其他特定字符串,并用逗号(,)或分号(;)替换它们,以创建一段可用的文本。然后我想在这个文本中搜索特定的关键字,并返回文本的其他部分。
到目前为止,我已经成功地将文本分解成多维数组,但我现在还不知道如何搜索这个数组,以便提取特定的信息。我实际上是在尝试构建一个可搜索的数组,当原始提要更新时,我可以从中提取信息。以下是当前阵列的一个示例:
Array
(
[0] => Array
(
[0] => 240
[1] => 1
[2] => euro
[3] => 2016-02-19 15:30:00
[4] => EUR
)
[1] => Array
(
[0] => 240
[1] => 3
[2] => euro2
[3] => 2016-02-19 15:00:00
[4] => EUR
)
[2] => Array
(
[0] => 1890
[1] => 9
[2] => uspb
[3] => 2016-02-17 22:59:00
[4] => USD
)
)
基本上,我希望能够编写一些东西来搜索这个数组,比如说uspb
(数组2,键2),如果找到了,则返回另一个键下的值。因此,如果我想要键0,它将返回1890
。如果我在搜索euro2
时需要键1,它将返回“3”。
我已经看过了大量的例子,没有一个真正符合我目前的目标。也许我看得不对,使用数组不是正确的方法。如有任何建议,将不胜感激。
作为参考,这里有一份到目前为止我的代码(稍微修改过的)。
<?php
$file=file_get_contents("http://www.example.com/feed/");
$trim=trim($file, "[]");
$find = array("{\"value\":\"", "\",\"date_utc\":\"", "\",\"currency\":\"");
$replace = array(",", ",", "");
$replaced = str_replace($find, $replace, $trim);
$ret = array_map (
function ($_) {return explode (',', $_);},
explode (';', $replaced)
);
print_r ($ret);
?>
由于数组是多维的,因此必须对其进行迭代才能找到所需的值:
foreach ($ret as $value) {
// the index you want to search is always `2`?
if ($value[2] == 'uspb2') {
echo $value[0];
break;
}
}
并开始发挥作用:
function findMyValue(
$array,
$search_key,
$search_str,
$key
) {
foreach ($array as $v) {
if ($v[$search_key] == $search_str) {
return $v[$key];
}
}
return 'NOT_FOUND';
}
echo findMyValue($ret, 2, 'euro', 1); // outputs 3
echo findMyValue($ret, 2, 'uspb', 0); // outputs 1890
正如评论中已经注意到的——这不是一个格式不佳的文本,而是JSON。您可以从JSON字符串中获得一个数组,只需使用json_decode
函数:
$file=file_get_contents("http://www.example.com/feed/");
$ret = json_decode($file, true);
var_dump($ret);
问题内容: 我有一个JSON对象数组,想返回一个特定的节点。为了简化我的问题,可以说数组看起来像这样: 例如,我想知道骑士的实力。函数,返回路径,使用路径运算符可以得到强度。有没有办法将两者结合起来,所以我可以做下面的事情? 我正在使用MySQL 8.0.15。 问题答案: 本质上,您的意思是将选择和投影应用于JSON文档的数组元素和对象字段。您需要执行WHERE子句之类的操作来选择数组中的“行”
这是关联数组: 我知道通过使用过滤数据并比较值的正常方法。我想在中搜索以下键/值对。 理想的输出应该是来自的第一个元素,因为它booking_name=abc,pdg=保证和user_area=es st 我尝试了: 这总是返回空数组。 仅供参考-我是新的。 更新1: 我使用下面的方法来获取具有可见。对所问问题进行了类似的尝试,但未能获得理想的结果。 如何在关联数组上应用作为数组数组传递的多个过滤
问题内容: 我有这个多维数组。我需要搜索它,仅返回与“ slug”的值匹配的键。我知道还有其他有关搜索多维数组的线程,但是我对这些情况的理解还不够。非常感谢您的帮助! 所以我需要一个像这样的函数: 这是数组: 问题答案: 很简单:
我有这个数组,当我搜索uid时,我需要返回找到密钥的数组,所以如果我搜索“4048”,我应该得到第二个数组。 有什么帮助吗? 提前谢谢
问题内容: 您如何在中搜索密钥?在此程序中,当用户输入密钥时,代码应安排在哈希图中搜索相应的值,然后进行打印。 请告诉我为什么它不起作用。 问题答案: 只需致电:
我有两个多维数组,我想通过使用其中一个数组的值和另一个数组的键来组合它们。数组如下: 阵列1: 阵列 2: 我想生成的结果数组如下: 有没有一个PHP函数可以用来完成这个任务?