2015-08-13 42 views
0

在PHP中可以这样做吗?键在数组中具有相同的值

$array = array(
      array(
       'key1' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.', 
       'key2' => custom_function(key1), 
       'key3' => 'Dolores quas quis beatae. Quis modi nulla aspernatur cumque cum atque deleniti provident.', 
      ), 
      array(
       'key1' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.', 
       'key2' => custom_function(key1), 
       'key3' => 'Dolores quas quis beatae. Quis modi nulla aspernatur cumque cum atque deleniti provident.', 
      ), 
array(
        'key1' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.', 
        'key2' => custom_function(key1), 
        'key3' => 'Dolores quas quis beatae. Quis modi nulla aspernatur cumque cum atque deleniti provident.', 
       ), 
); 

而不是在两个键中键入两次相同的值?

我试图做的是在创建数组的正确设置键2的值,并没有做到这一点INSEAD我已经创建了阵列

$array['key2'] = my_custom_function($array['key1']); 
+1

为什么不对其进行测试,并找出? – Epodax

+0

是的,这是可能的。你有问题吗? – CodeGodie

+0

'my_custom_function($ myarray的[ 'key1的'])' – Daan

回答

2

好,不与确切的语法,实际上我不知道,如果你能在创建数组的过程中做到这一点。

你想要做的是将数值B设置为等于数组A中的值,还有其他的东西你可以做,它将数值A的内容存储在变量中,然后将它放入数组中:

$myValue = 'some lorum ipsum text' 

$myArray = [ 
    'key1' => $myValue, 
    'key2' => myFunction($myValue) 
    //... 
]; 

这样,您就不必使用你想避免的方法,它可能将误差小于试图做到这一点的阵列本身即使工作完全正常俯卧;)

编辑1

OP有一个嵌套数组,其中包含更多数组,其中包含需要重复的键/值对。

我们做什么在这里,如果我的假设是key1始终是主要价值和key2永远是你想复制的价值:

foreach ($array as $singleArray) { 

    //$singleArray is now $array[i] where i = n of times looped 
    //also note that $singleArray['key1'] exists here. 
    $myValue = $singleArray['key1']; 

    //here we update 'key2' of the array to match 'key1' after executing a function on it's value 
    $singleArray['key2'] = myFunction($myValue); 

} 

如果你的钥匙已经在阵列中存在前你开始这个循环。

例如您的阵列填补了主阵列

内然后你就可以放心地做到这一点。 请注意,每个子数组将覆盖$singleArray['key2']中的任何内容。

+0

我想到了$ myValue,但如果我有很多这样的数组呢?说例如20 ..这样我不得不创建20个不同的变量然后..这就是为什么我正在寻找一种方法来做到这一点在创建数组,如你所说.. – Lykos

+0

如果你有20个数组,你可以只是每次移动到一个新数组时,都要覆盖$ myValue - 这并不是很好,但如果你必须这样做,那么这种方法将成为可能。 (请记住,你可以简单地覆盖变量,所以你不需要20个,只需要1个即可)。 – SidOfc

+0

问题是我所有的数组嵌套在另一个父数组中,所以我无法在每个子数组之前覆盖$ myValue。 php通过错误 – Lykos

-1

你需要首先定义一个阵列中后。 How to create an array?

$array = array(
    'key1' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.', 
    'key2' => '', // has same value like key1 
    'key3' => 'Dolores quas quis beatae. Quis modi nulla aspernatur cumque cum atque deleniti provident.', 
); 

$array['key1']值更改为$array['key1']

echo $array['key2'] = $array['key1']; 

注意

您需要通过您的最终定义my_custom_function(),你告诉您的评论! It is for formatting

+0

'my_custom_function()'中有什么? –

+0

我的数组看起来像你的。我只是问是否有办法做这样的事情:'key2'=> my_custom_function($ array ['key1'])..我试过了,但我得到错误 – Lykos

+0

@Lykos我已经更新了我的答案。 – Hassaan

相关问题