我有一个或多个数组。大约500个初选,每行6行。
以下是前两个例子:
Array
(
[0] => Array
(
[Stock book code] => a-04
[Date] => 1962
[Work Title] => River Barge
[height] => 0
[width] => 0
[materials] => Oil on Board
[Ownership] => Sold
)
[1] => Array
(
[Stock book code] => a-08
[Date] => 1962
[Work Title] => Thames Bridge Fantasy
[height] => 48
[width] => 36
[materials] => Oil on Board
[Ownership] => Available
)我想将这段代码的选择注入一个while函数中,以便在某些图像上打印元数据。
我需要查询这个列表,以找到变量$image,它将持有股票图书代码中的值。a-04。有人建议最好的方法是Linq库。例如https://code.google.com/p/phinq
该数组当前通过代码段(例如<?php snippet('csvtoarrayvibhu')?> )调用,以便可以全局预加载或放入if-语句中。欢迎就哪个更好的问题发表意见。
<ul class="gallery">
<?php $imagelist= $page->imagelist();
if ($imagelist != ''){
$imagelistitem= explode(", ", $imagelist);
foreach ($imagelistitem as $image): ?>
<li><img src="<?php echo url('assets/artistswork/450/').$image.'.jpg' ?>" />查询此处
<span class="workTitle">Title</span><span class="workDate">Date</span><span class="workMaterial">Material</span><span class="workDimensions">Dimensions</span><span class="workPrice">Price</span></li>
<?php endforeach ;} ?>
</ul>我目前正在使用csv来使用代码数组编译器,如下所示。来自于gist的一个项目,下面是Joe的第一个答案。它工作得很好。
不知道在一个或两个函数中这样做是否最有意义,所以我引用了下面的许多内容。
<?PHP
function csv_to_array($filename='', $delimiter=',') {
if (!file_exists($filename))
return 'not exist';
if (!is_readable($filename))
return 'not readable';
$header = NULL;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE) {
while (($row = fgetcsv($handle, 200, $delimiter)) !== FALSE) {
if (!$header)
$header = $row;
else
$data[] = array_combine($header, $row);
}
fclose($handle);
}
return $data;
}
function createModels($data)
{
$newRow = array();
if (is_array($data)){
foreach($data as $rowIndex => $row){
if(is_array($row)){
$newRowIndex = $row['Stock book code'];
}
$newData[$newRowIndex] = array_merge($newRow, $row);
}
}
return $newData;
}
echo '<pre>';
$imageinfoarray = csv_to_array('peterliddle/assets/artistswork/imagemeta.csv');
print_r(createModels($imageinfoarray));
echo '</pre>';
?>发布于 2013-05-08 09:34:11
如果你能重新设计你的数组,让它看起来更像这样,那就更好了;
Array
(
[a-04] => Array
(
[Stock book code] => a-04
[Date] => 1962
[Work Title] => River Barge
[height] => 0
[width] => 0
[materials] => Oil on Board
[Ownership] => Sold
)
[a-08] => Array
(
[Stock book code] => a-08
[Date] => 1962
[Work Title] => Thames Bridge Fantasy
[height] => 48
[width] => 36
[materials] => Oil on Board
[Ownership] => Available
)
)然后,您可以像$additionalData$image一样调用数据,假设您的附加数据数组存储在$additionalData中,并且您的$image包含项目的库存号。实际上,这里要做的是创建一个模型数组,其中数组的每一行都包含有关一个数据实例的所有信息。
通过添加如下函数,可以使数组看起来像这样
function createModels($data)
{
$newRow = array();
if (is_array($data)){
foreach($data as $rowIndex => $row){
if(is_array($row)){
$newRowIndex = $row['Stock book code'];
}
$newData[$newRowIndex] = array_merge($newRow, $row);
}
}
return $newData;
}并从你现有的片段中调用它。
https://stackoverflow.com/questions/16435502
复制相似问题