PHP如何从多维数组中获取值?
我在一个类中有一个数组,希望获得“Apple”键值(“iPhone”)。 我假设需要为每个循环使用一个 我该怎么做呢 更新:我还需要指定customerType和productType键值PHP如何从多维数组中获取值?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我在一个类中有一个数组,希望获得“Apple”键值(“iPhone”)。 我假设需要为每个循环使用一个 我该怎么做呢 更新:我还需要指定customerType和productType键值 class Products { public function products_list() { $customerType = 'national'; $productType = 'phones'; $phoneType = 'Apple';
class Products {
public function products_list() {
$customerType = 'national';
$productType = 'phones';
$phoneType = 'Apple';
$productsArr = array();
$productsArr[] = array(
'customerType' => 'national',
'productType' => array(
'phones' => array(
'Apple' => 'iPhone',
'Sony' => 'Xperia',
'Samsung' => 'Galaxy'
),
'cases' => array(
'leather' => 'black',
'plastic' => 'red',
),
),
'international' => array(
'phones' => array(
'BlackBerry' => 'One',
'Google' => 'Pixel',
'Samsung' => 'Note'
),
'cases' => array(
'leather' => 'blue',
'plastic' => 'green'
),
)
);
}
}
如果您想要单个条目:
echo $productsArr[0]['productType']['phones']['Apple']."<br />";
echo$productsArr[0]['productType']['phones']['Apple'].“
”;
如果存在多个数据,则可以使用foreach:
foreach ($productsArr as $prod){
echo $prod['productType']['phones']['Apple']."<br />";
}
foreach($productsArr作为$prod){
echo$prod['productType']['phones']['Apple'].“
”;
}
试试看
foreach($productsArr[0]['productType']['phones'] as $phones){
echo $phones[$phoneType]; }
我已经创建了一个函数,您可以或多或少地给它任何产品,它将返回数组中的键和值
<?php
class Products
{
public function products_list()
{
$customerType = 'national';
$productType = 'phones';
$phoneType = 'Apple';
$productsArr[] = array(
'customerType' => 'national', 'productType' => array(
'phones' => array(
'Apple' => 'iPhone',
'Sony' => 'Xperia',
'Samsung' => 'Galaxy'
),
'cases' => array(
'leather' => 'black',
'plastic' => 'red',
),
),
'international' => array(
'phones' => array(
'BlackBerry' => 'One',
'Google' => 'Pixel',
'Samsung' => 'Note'
),
'cases' => array(
'leather' => 'blue',
'plastic' => 'green'
),
)
);
echo $this->get_value($phoneType, $productsArr) .'<br>';
echo $this->get_value($customerType, $productsArr) .'<br>';
echo $this->get_value($productType, $productsArr) .'<br>';
}
function get_value($product, array $products)
{
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($products), RecursiveIteratorIterator::CHILD_FIRST);
foreach ($iterator as $key => $value) {
if (is_string($value) && ($key == $product)) {
return 'key ->' . $key .' value ->'.$value;
}
}
return "";
}
}
$phone_products = new Products();
$phone_products->products_list();
从没有上课的时候开始
$phone_products = new Products();
echo ($phone_products->get_value($phoneType, $productsArr));
//output: key ->Apple value ->iPhone
注意:$phoneType,$productsArr将被定义为它们正在使用的方法或从其他方法传递的方法,或在类中定义全局变量。这将在SDE主数组中出现多次或仅出现一次?您是否尝试使用foreach,但它不起作用?它可能在主数组中出现多次。@ianhman您能举一个例子吗此:-
它可能在主阵列中多次出现
?也许我可以给出一个短得多的代码?这样苹果键就可以在数组中出现不止一次了。谢谢,不过这在一个类中是如何工作的呢?顺便说一句,我已经更新了我的问题,因为我还需要指定customerType和productType键值。@ianhman我已经编辑了解决方案。要调用客户类型,只需将“$phonetype”替换为customerType,因为它们都在同一个数组中。e、 g$this->get_value($customerType,$productsArr);或者$this->get_value($productType,$productsArr);谢谢你的编辑,尽管我不能让它在课堂上使用。我使用的是PHPStorm IDE,它在方法的开头不识别数组$productsArr:公共函数get_value($product,array$productsArr),在这里我还回显类值,变量显示为未定义的回显($phone_products->get_value($phoneType,$productsArr));
foreach($productsArr as $key1 => $data1 ){
if(is_array($data1))
foreach($data1 as $key2 => $data2 ){
if(is_array($data2))
foreach($data2 as $key3 => $data3 ){
if(array_key_exists('Apple', $data3)) {
echo $data3['Apple'] ."\n";
}
}
}
}
foreach($productsArr as $key1 => $data1 ){
if(is_array($data1))
foreach($data1 as $key2 => $data2 ){
if(is_array($data2))
foreach($data2 as $key3 => $data3 ){
if(array_key_exists('Apple', $data3)) {
echo $data3['Apple'] ."\n";
}
}
}
}