在php中呈现arraykeys
我想使用一个函数来渲染arraykey,以便以后可以使用它。我甚至不知道这样的事情是否可能。我现在使用的函数如下所示在php中呈现arraykeys,php,Php,我想使用一个函数来渲染arraykey,以便以后可以使用它。我甚至不知道这样的事情是否可能。我现在使用的函数如下所示 function array_key_render($key){ $result = explode('.', $key); $num = count($result); for($i=0;$i<$num;$i++){ $array_key .= [$result[$i]];
function array_key_render($key){
$result = explode('.', $key);
$num = count($result);
for($i=0;$i<$num;$i++){
$array_key .= [$result[$i]];
}
return $array_key;
}
当我选择PRODUCT.PRIZE时,它会返回false和我选择的答案。如何为所有数字键创建某种通配符以使它们匹配?类似于产品。奖品
这一切都是为了一个小小的模板引擎。如果你能给我一些建议或提示,那就太好了。试试这个
function array_key_render($key){
$result = explode('.', $key);
$num = count($result);
$arr = array();
for($i=0;$i<$num;$i++){
$arr[$result[$i]] = array("price" => $i);
}
}
函数数组\u键\u渲染($key){
$result=分解('.',$key);
$num=计数($result);
$arr=array();
对于($i=0;$i$i);
}
}
我假设你的$key看起来像这样“1.2.3.4.5”
仅供参考:未经测试,也未完全了解您想要做的事情。。。希望这有帮助试试这个
function array_key_render($key){
$result = explode('.', $key);
$num = count($result);
$arr = array();
for($i=0;$i<$num;$i++){
$arr[$result[$i]] = array("price" => $i);
}
}
函数数组\u键\u渲染($key){
$result=分解('.',$key);
$num=计数($result);
$arr=array();
对于($i=0;$i$i);
}
}
我假设你的$key看起来像这样“1.2.3.4.5”
仅供参考:未经测试,也未完全了解您想要做的事情。。。希望这有帮助我还没有测试过这段代码,所以请先试用一下。 无论如何:首先将for循环更改为:
for($i=0;$i<$num;$i++){
$array_key .= "[" . $result[$i] ."]";
}
for($i=0;$i我还没有测试这段代码,所以请先试用一下。
无论如何:首先将for循环更改为:
for($i=0;$i<$num;$i++){
$array_key .= "[" . $result[$i] ."]";
}
for($i=0;$i函数返回一个字符串,因此这将不起作用
$a = array("PRODUCT" => array("PRICE" => 10.99));
$key = array_key_render("PRODUCT.PRICE");
echo $a[$key];
不过,我能看出你的想法
<PRE>
<?php
// Obtain an array of keys based on our dotted string
function array_key_render($key)
{
$result = explode('.', $key);
return $result;
}
// iterate over the array using the known keys trying to find the right element
function array_access($key, $_array)
{
$array = $_array;
$keys = array_key_render($key);
$found_keys = 0;
foreach($keys as $k)
{
if(isset($array[$k]))
{
$array = $array[$k];
$found_keys++;
}
// Oh no, we are lost, break, the keys were not found
else
{
break;
}
}
// Check that we found all the keys we were looking for
if($found_keys == count($keys))
return $array;
return false;
}
$a = array("PRODUCT" => array("PRICE" => 10.99));
$key = "PRODUCT.PRICE";
var_dump(array_access($key, $a));
$key = "PRODUCT.NOWAY";
var_dump(array_access($key, $a));
$a = array("PRODUCT" => array("PRIZE" => "REP"));
$key = "PRODUCT.PRIZE";
var_dump(array_access($key, $a));
函数返回一个字符串,因此这将不起作用
$a = array("PRODUCT" => array("PRICE" => 10.99));
$key = array_key_render("PRODUCT.PRICE");
echo $a[$key];
不过,我能看出你的想法
<PRE>
<?php
// Obtain an array of keys based on our dotted string
function array_key_render($key)
{
$result = explode('.', $key);
return $result;
}
// iterate over the array using the known keys trying to find the right element
function array_access($key, $_array)
{
$array = $_array;
$keys = array_key_render($key);
$found_keys = 0;
foreach($keys as $k)
{
if(isset($array[$k]))
{
$array = $array[$k];
$found_keys++;
}
// Oh no, we are lost, break, the keys were not found
else
{
break;
}
}
// Check that we found all the keys we were looking for
if($found_keys == count($keys))
return $array;
return false;
}
$a = array("PRODUCT" => array("PRICE" => 10.99));
$key = "PRODUCT.PRICE";
var_dump(array_access($key, $a));
$key = "PRODUCT.NOWAY";
var_dump(array_access($key, $a));
$a = array("PRODUCT" => array("PRIZE" => "REP"));
$key = "PRODUCT.PRIZE";
var_dump(array_access($key, $a));
快速解决方案,从$result数组的最后一个元素开始,并将其添加到$array索引中:
$array = $value;
for($i=$num-1;$i>=0;$i--){
$array[$result[$i]] = $array;
}
因此,如果输入是PRODUCT.PRIZE.BLA1.BLA2,输出将是$array[PRODUCT][PRIZE][BLA1][BLA2]快速解决方案,从$result数组的最后一个元素开始并将其添加到$array索引:
$array = $value;
for($i=$num-1;$i>=0;$i--){
$array[$result[$i]] = $array;
}
所以,如果输入是PRODUCT.PRIZE.BLA1.BLA2,输出将是$array[PRODUCT][PRIZE][BLA1][BLA2]我想这是您想要的
function array_key_render($key){
$keys = array_reverse(explode('.', $key));
$array = "somevalue";
foreach ($keys as $key){
$array = array($key => $array);
}
return $array;
}
我想这是你想要的
function array_key_render($key){
$keys = array_reverse(explode('.', $key));
$array = "somevalue";
foreach ($keys as $key){
$array = array($key => $array);
}
return $array;
}
你想让你的数组看起来像这样?数组(“产品”=>“奖品”)?不,数组(“产品”=>数组(“价格”=>“某物价值”)你想让你的数组看起来像这样?数组(“产品”=>“奖品”)?不,数组(“产品”=>数组(“价格”=>“某物价值”)谢谢!不知道eval()谢谢!不知道eval()这是最好的方法,我走的是一条木路。谢谢你,你知道我如何为数字键加入某种通配符函数吗?更新:)我想我需要在解析键时捕获通配符,但是现在我不知道循环遍历数组元素并保存它们的最佳方法是什么,因为从那时起,解析器将需要解析每个通配符的数字键。这是最好的方法,我在处理整件事时走的是一条木路。谢谢你你知道如何为数字键包含某种通配符函数吗?更新:)我想我需要在解析键时捕获通配符,但是现在我不知道循环遍历数组元素并保存它们的最佳方法是什么,因为从那时起,解析器需要解析每个通配符的数字键