2015-06-01 42 views
-1

我有一個多維數組和一個數組,它擁有多維數組中的某個元素的鍵。我怎麼能取消設置該元素,基於數組與鍵。我正在尋找可以工作的代碼,而不管數組的大小。基於鍵陣列的php刪除元素

這裏是例如:

<?php 
$array = array(
    1 => array('name' => 'mike','age' => 23), 
    2 => array('name' => 'nick','age' => 18), 
); 

$keys = array(2,'name'); 

// 
//Here code to unset that element 
// 

/* 
//This is how the new array should be: 
$array = array(
    1 => array('name' => 'mike','age' => 23), 
    2 => array('age' => 18), 
); 
*/ 
?> 

編輯:上面的代碼是用於clearity。我可以添加我迄今爲止嘗試過的unset(),但它沒有任何有用的東西,並且會使問題不太清楚。我要求提供正確方向的提示,而不是完全有效的代碼。

+0

這僅僅是一個編碼例如以提供更說明。我不要求任何人爲我寫代碼,但我只是這樣添加它,所以我很清楚我在找什麼。我需要的是有人指出我正確的方向,因爲我搞砸了unset(),但沒有得到任何有用的東西。 編寫問題時最重要的事情就是明確表示,那就是爲什麼我添加了這樣的代碼。請合理並刪除您的-1。 – user4493177

回答

1

我已經找到了解決方案:

<?php 

function unsetByKeys($keys,&$array,$path = array()){ 

    $diff = count($keys)-count($path); 
    if($diff > 1){ 
     $path[] = $keys[count($path)]; 
     unsetByKeys($keys,$array,$path); 
    }else{ 
     $lastKey = $keys[count($path)]; 

     $subArray = &$array; 
     foreach($path AS $p){ 
      $subArray = &$subArray[$p]; 
     } 
     unset($subArray[$lastKey]); 
    } 
} 

$array = array(
    1 => array('name' => 'mike','age' => 23), 
    2 => array('name' => 'nick','age' => 18), 
); 

$keys = array(2,'name'); 

unsetByKeys($keys,$array); 

var_dump($array); 
?> 
+0

下一次問一個正確的問題,所以我不會浪費我的時間。 – Falt4rm

-1

代碼:http://www.tehplayground.com/#9Oup7h6gh

// example code 

$array = array(
1 => array('name' => 'mike','age' => 23), 
2 => array('name' => 'nick','age' => 18), 
); 

$keys = array(2,'name'); 

unset($array[($keys[0])][($keys[1])]); 

print_r($array); 

/* 
//This is how the new array should be: 
$array = array(
    1 => array('name' => 'mike','age' => 23), 
    2 => array('age' => 18), 
); 
*/ 

OUTPUT:

Array 
(
[1] => Array 
    (
     [name] => mike 
     [age] => 23 
    ) 

[2] => Array 
    (
     [age] => 18 
    ) 

) 
+0

嗨,謝謝你的回覆。這就是我在尋找的東西,但只有這樣才能獲得可變數量的密鑰。所以這個數組也可能有3個級別(和數組3鍵)。 基本上我需要知道如何得到這個:$ array [($ keys [0])] [($ keys [1])] 與可變數量的鍵。 – user4493177

+0

你可以提供一個正確的例子,然後... – Falt4rm