Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中呈现arraykeys_Php - Fatal编程技术网

在php中呈现arraykeys

在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]];

我想使用一个函数来渲染arraykey,以便以后可以使用它。我甚至不知道这样的事情是否可能。我现在使用的函数如下所示

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()这是最好的方法,我走的是一条木路。谢谢你,你知道我如何为数字键加入某种通配符函数吗?更新:)我想我需要在解析键时捕获通配符,但是现在我不知道循环遍历数组元素并保存它们的最佳方法是什么,因为从那时起,解析器将需要解析每个通配符的数字键。这是最好的方法,我在处理整件事时走的是一条木路。谢谢你你知道如何为数字键包含某种通配符函数吗?更新:)我想我需要在解析键时捕获通配符,但是现在我不知道循环遍历数组元素并保存它们的最佳方法是什么,因为从那时起,解析器需要解析每个通配符的数字键