开发者

Traverse non-numerical indexes of an array

Think I'm missing a basic concept. I want to generate html by traversing through a few different arrays of data. They don't use numbers as indexes so numerical looping doesn't work. I cant figure out how to use a foreach() here either. How can I traverse $price and $description when the indexes aren't numbers?

Sample:

$traverser= 0;
while($traverser < $number_of_records)
{
    print $traverser . " - " . $price[$traverser] . "<br />";
    print $description[$traverser];
    $traverser++;
}

Partial Sample of the Array Structure:

object(phpQueryObject)#2799 (13) { ["documentID"]=>  string(32) "1d62be942498df890cab4ccb78a007a2" ["document"]=>  &object(DOMDocument)#3 (0) { } ["charset"]=>  &string(5) "utf-8" ["documentWrapper"]=>  &object(DOMDocumentWrapper)#2 (17) { ["document"]=>  &object(DOMDocument)#3 (0) { } ["id"]=>  string(32) "1d62be942498df890cab4ccb78a007a2" ["contentType"]=>  string(9) "text/html" ["xpath"]=>  &object(DOMXPath)#4 (0) { } ["uuid"]=>  int(0) ["data"]=>  array(0) { } ["dataNodes"]=>  array(0) { } ["events"]=>  array(0) { } ["eventsNodes"]=>  array(0) { } ["eve开发者_StackOverflow社区ntsGlobal"]=>  array(0) { } ["frames"]=>  array(0) { } ["root"]=>  &object(DOMElement)#5 (0) { } ["isDocumentFragment"]=>  &bool(true) ["isXML"]=>  bool(false) ["isXHTML"]=>  bool(false) ["isHTML"]=>  bool(true) ["charset"]=>  &string(5) "utf-8" } ["xpath"]=>  &object(DOMXPath)#4 (0) { } ["elements"]=>  array(560) { [0]=>  object(DOMElement)#2239 (0) { } [1]=>  object(DOMElement)#2240 (0) { } [2]=>  object(DOMElement)#2241 (0) { } [3]=>  object(DOMElement)#2242 (0) { } [4]=>  object(DOMElement)#2243 (0) { } [5]=>  object(DOMElement)#2244 (0) { } [6]=>  object(DOMElement)#2245 (0) { } [7]=>  object(DOMElement)#2246 (0) { } [8]=>  object(DOMElement)#2247 (0) { }


Since it looks like you need the array keys as well, since you're referencing multiple different arrays, you want the $a as $k => $v syntax for foreach:

foreach($description as $key => $desc)
{
    print $key . " - " . $price[$key] . "<br />";
    print $desc;
}


You can take your pic as to how you want to iterate them:

<?php

  $ary = array(   // demo array
    'apple' => 'Apple',
    'orange' => 'Orange',
    'grape' => 'Grape'
  );

  // show the structure
  var_dump($ary); echo "\r\n";

  // use a foreach with the key and value
  foreach ($ary as $key => $val)
    printf("%s => %s\r\n", $key, $val);
  echo "\r\n";

  // just get the raw keys
  $keys = array_keys($ary);
  var_dump($keys); echo "\r\n";

output:

array(3) {
  ["apple"]=>
  string(5) "Apple"
  ["orange"]=>
  string(6) "Orange"
  ["grape"]=>
  string(5) "Grape"
}

apple => Apple
orange => Orange
grape => Grape

array(3) {
  [0]=>
  string(5) "apple"
  [1]=>
  string(6) "orange"
  [2]=>
  string(5) "grape"
}

There's always array_map & array_walk.


I'm not sure I get the question, but it's really as simple as:

<?php
$array = array('foo', 'bar');
foreach ($array as $element) {
    echo "{$element}\n";
}

This should output "foo" and "bar".

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜