Php 多维数组-foreach,在foreach中

Php 多维数组-foreach,在foreach中,php,arrays,multidimensional-array,foreach,Php,Arrays,Multidimensional Array,Foreach,我有一个多维数组,它正以我想要的方式打印出来,然而,我一直在思考如何将它构建到我正在寻找的for-each循环中 请注意:$handle是客户端在后端输入的字段 <?php $gp = Mage::getStoreConfig('social_code/social_group/google_field'); $ld = Mage::getStoreConfig('social_code/social_group/linkedin_field'); $tw = Mage::getStore

我有一个多维数组,它正以我想要的方式打印出来,然而,我一直在思考如何将它构建到我正在寻找的for-each循环中

请注意:$handle是客户端在后端输入的字段

<?php
$gp = Mage::getStoreConfig('social_code/social_group/google_field');
$ld = Mage::getStoreConfig('social_code/social_group/linkedin_field');
$tw = Mage::getStoreConfig('social_code/social_group/twitter_field');
$fb = Mage::getStoreConfig('social_code/social_group/facebook_field');

$social_array = array(
    "facebook" => array(
        'class' => "facebook",
        'url' => 'https://www.facebook.com/',
        'handle' => $fb
    ),
    "twitter" => array(
        'class' => "twitter",
        'url' => 'https://www.twitter.com/',
        'handle' => $tw
    ),
    "linked-in" => array(
        'class' => "linked-in",
        'url' => 'http://www.linkedin.com/company/',
        'handle' => $ld
    ),
    "google-plus" => array(
        'class' => "google-plus",
        'url' => 'https://plus.google.com/',
        'handle' => $gp
    )
);
?>

现在我想把它作为一个无序的列表,所以我有下面的,但它仍然不适合我

<ul>
        <?php foreach ($social_array as $name => $group) :?>
            <?php foreach ($group as $class => $url) :?>
                <li><a href="<?php echo ("$url"); ?>" class="<?php echo ("$class;") ?>"><?php echo ("$group"); ?></a></li>
            <?php endforeach; ?>
        <?php endforeach; ?>
    </ul>
我希望它能在所有的社交圈中循环,并引发类似的结果

<li><a href="<?php echo ($url);?><?php echo ($handle);?>" class="<?php echo ($class); ?>"><?php echo $name; ?></a></li>
  • 或者更容易理解

    <li><a href="http://www.facebook.com/handle" class="facebook">Facebook</a></li>
    
  • 另外,如果我把这件事弄得过于复杂,请让我知道。

    试一试:

    <ul>
        <?php foreach ($social_array as $name => $properties) :?>
            <li><a href="<?php echo ($properties["url"] . $properties["handle"]); ?>" class="<?php echo ($properties["class"]); ?>"><?php echo ucfirst($name); ?></a></li>
        <?php endforeach; ?>
    </ul>
    
    在这个foreach中,语法是
    foreach($key=>$value数组)
    ,因此这里
    $name
    是$social\u数组中的键,
    $properties
    是与该键关联的数组。

    试一试:

    <ul>
        <?php foreach ($social_array as $name => $properties) :?>
            <li><a href="<?php echo ($properties["url"] . $properties["handle"]); ?>" class="<?php echo ($properties["class"]); ?>"><?php echo ucfirst($name); ?></a></li>
        <?php endforeach; ?>
    </ul>
    
    <ul>
        <?php foreach ($social_array as $name => $group) :?>
            <li><a href="<?php echo $group['url'].$group['handle']; ?>" class="<?php echo $group['class']; ?>"><?php echo $name; ?></a></li>
        <?php endforeach; ?>
    </ul>
    
    在这个foreach中,语法是
    foreach($key=>$value数组)
    ,因此这里
    $name
    是$social\u数组中的键,
    $properties
    是与该键关联的数组。

      <ul>
          <?php foreach ($social_array as $name => $group) :?>
              <li><a href="<?php echo $group['url'].$group['handle']; ?>" class="<?php echo $group['class']; ?>"><?php echo $name; ?></a></li>
          <?php endforeach; ?>
      </ul>
      

    如果我理解正确,我想这就是你要找的

    <ul>
            <?php foreach ($social_array as $name => $group) :?>
                    <li><a href="<?php echo $group['url'].$group[handle']; ?>" class="<?php echo $group['class']; ?>"><?php echo $name
            <?php endforeach; ?>
    </ul>
    

    • 如果我理解正确的话,我想这就是你要找的

      <ul>
              <?php foreach ($social_array as $name => $group) :?>
                      <li><a href="<?php echo $group['url'].$group[handle']; ?>" class="<?php echo $group['class']; ?>"><?php echo $name
              <?php endforeach; ?>
      </ul>
      

      • 没有必要对内部进行检查

        <?php foreach ($social_array as $name => $group) :?>
                <li><a href="<?php echo $group['url'] ?>" class="<?php echo $group['class'] ?>"><?php echo $group['class']; ?></a></li>
        <?php endforeach; ?>
        
        
        

      • 无需使用内部foreach

        <?php foreach ($social_array as $name => $group) :?>
                <li><a href="<?php echo $group['url'] ?>" class="<?php echo $group['class'] ?>"><?php echo $group['class']; ?></a></li>
        <?php endforeach; ?>
        
        
        
      • 请参阅下面的工作示例。每人一张

        <?php
        $social_array = array(
            "facebook" => array(
                'class' => "facebook",
                'url' => 'https://www.facebook.com/',
                'handle' => 'Mage::getStoreConfig(\'social_code/social_group/twitter_field\')'
            ),
            "twitter" => array(
                'class' => "facebook",
                'url' => 'https://www.facebook.com/',
                'handle' => 'Mage::getStoreConfig(\'social_code/social_group/twitter_field\')'
            ),
            "linked-in" => array(
                'class' => "facebook",
                'url' => 'https://www.facebook.com/',
                'handle' => 'Mage::getStoreConfig(\'social_code/social_group/twitter_field\')'
            ),
            "google-plus" => array(
                'class' => "facebook",
                'url' => 'https://www.facebook.com/',
                'handle' => 'Mage::getStoreConfig(\'social_code/social_group/twitter_field\')'
            )
        );
        
        $html = '<ul>';
        
        foreach ($social_array as $name => $class_array){
                $html .= '<li><a href="' . $class_array['url'] . $class_array['handle']  .'" class="' . $class_array['class']. '">'. $name. '</a></li>';
        }
        $html .= '</ul>';
        
        print $html;
        ?>
        
        
        
        请参阅下面的工作示例。每人一张

        <?php
        $social_array = array(
            "facebook" => array(
                'class' => "facebook",
                'url' => 'https://www.facebook.com/',
                'handle' => 'Mage::getStoreConfig(\'social_code/social_group/twitter_field\')'
            ),
            "twitter" => array(
                'class' => "facebook",
                'url' => 'https://www.facebook.com/',
                'handle' => 'Mage::getStoreConfig(\'social_code/social_group/twitter_field\')'
            ),
            "linked-in" => array(
                'class' => "facebook",
                'url' => 'https://www.facebook.com/',
                'handle' => 'Mage::getStoreConfig(\'social_code/social_group/twitter_field\')'
            ),
            "google-plus" => array(
                'class' => "facebook",
                'url' => 'https://www.facebook.com/',
                'handle' => 'Mage::getStoreConfig(\'social_code/social_group/twitter_field\')'
            )
        );
        
        $html = '<ul>';
        
        foreach ($social_array as $name => $class_array){
                $html .= '<li><a href="' . $class_array['url'] . $class_array['handle']  .'" class="' . $class_array['class']. '">'. $name. '</a></li>';
        }
        $html .= '</ul>';
        
        print $html;
        ?>
        

        您忘记的是,内部的
        foreach
        正在处理每个项目,即
        类、ulr、句柄
        一次处理一个项目

        因此,您需要在传递3个项目时存储所需的信息,以便在获得实际需要的2个项目后可以使用这些信息

        所以这可能会有所帮助

        <ul>
        <?php 
            foreach ($social_array as $name => $group) :
        
                $class    = NULL;
                $url      = NULL;
                $handle   = NULL;
        
                foreach ($group as $name => $value) :
        
                    switch ($name) :
                       case 'class'   : $class  = $value;     break;
                       case 'url'     : $url    = $value;     break;
                       case 'handle'  : $handle = $value;     break;
                    endswitch;
        
                    if ( isset($class) AND isset($url) AND isset($handle) ) :
        
                       echo '<li><a href="' . $url.$handle . '" class="' . $class . '">' . $group . '</a></li>';
        
                       $class   = NULL;
                       $url     = NULL;
                       $handle  = NULL;
                    endif;
        
                endforeach;
        
            endforeach;
        ?>
        </ul>
        

        您忘记的是,内部的
        foreach
        正在处理每个项目,即
        类、ulr、句柄
        一次处理一个项目

        因此,您需要在传递3个项目时存储所需的信息,以便在获得实际需要的2个项目后可以使用这些信息

        所以这可能会有所帮助

        <ul>
        <?php 
            foreach ($social_array as $name => $group) :
        
                $class    = NULL;
                $url      = NULL;
                $handle   = NULL;
        
                foreach ($group as $name => $value) :
        
                    switch ($name) :
                       case 'class'   : $class  = $value;     break;
                       case 'url'     : $url    = $value;     break;
                       case 'handle'  : $handle = $value;     break;
                    endswitch;
        
                    if ( isset($class) AND isset($url) AND isset($handle) ) :
        
                       echo '<li><a href="' . $url.$handle . '" class="' . $class . '">' . $group . '</a></li>';
        
                       $class   = NULL;
                       $url     = NULL;
                       $handle  = NULL;
                    endif;
        
                endforeach;
        
            endforeach;
        ?>
        </ul>
        

        这看起来很有用,我会试试看。谢谢。这个看起来很有用,我会试试的。谢谢