【问题标题】:php array keyword counterphp数组关键字计数器
【发布时间】:2012-09-21 22:42:35
【问题描述】:

我正在将图像文件信息推送到数组中。 它非常简单,除了关键字有时也是一个数组。 这对我现在正在做的事情很有用。 这是我的数组的示例

$list[]=array(filename=>$file,width=>$w,height=>$h,caption=>$iptc["2#120"],keywords=>$iptc["2#025"]);

我可以使用这个数组来输出 javascript 幻灯片所需的 html。

if($handle = opendir($dirname)) { 
  while(false !== ($file = readdir($handle))){ 
    if(eregi($pattern, $file)){ 
      //if this file is a valid image 
      $path = $dirname . "" . $file ; 
      $path2 = $dirname ."JPEG/" . $file ; 
      $size = getimagesize($path, $info); 
      $w = $size[0]; $h = $size[1]; 
      $iptc = iptcparse($info['APP13']); 

      if(in_array($key,$iptc["2#025"])){
        $list[]=array(
          filename=>$file,
          width=>$w,
          height=>$h,
          caption=>$iptc["2#120"],
          keyw‌​ords=>$iptc["2#025"]
        ); 
      } 
    } 
  } 
  closedir($handle); }

我希望能够在数组中有另一个变量,当添加每个唯一关键字时,该变量将计数一个数字。这将允许我直接进入幻灯片的中间,因为我使用的 js 幻灯片的 js 插件只有在被数字引用时才具有直接链接

我想我需要创建一个包含所有关键字的唯一数组,然后使用某种复杂的 if 语句来计算每个唯一变量.....

但是我不知道该怎么做

请帮忙

谢谢

杰里米

【问题讨论】:

  • 这里是完整的代码(是的,代码在循环中)
  • if($handle = opendir($dirname)) { while(false !== ($file = readdir($handle))){ if(eregi($pattern, $file)){ //如果这个文件是一个有效的图像 $path = $dirname . “”。 $文件; $path2 = $dirname ."JPEG/" 。 $文件; $size = getimagesize($path, $info); $w = $size[0]; $h = $大小[1]; $iptc = iptcparse($info['APP13']); if(in_array($key,$iptc["2#025"])){ $list[]=array(filename=>$file,width=>$w,height=>$h,caption=>$iptc[ "2#120"],keywords=>$iptc["2#025"]); } } } closeir($handle); }
  • K,所以代码很清楚,谢谢,我将它添加到帖子中,确保你下次这样做;)你的问题不太清楚关键字是什么唯一变量加一个数的过程确实有共同点。如果密钥在$iptc["2#05"] 数组中,您只需将图像详细信息添加到$list,您还声明这是有时也是一个数组。查看您的代码,您总是认为它是一个数组……希望您明白我的意思吗? :)

标签: php arrays counter


【解决方案1】:

我不确定我是否理解您要查找的内容,但听起来像:

while(loop_conditions){
    $list[]=array(filename=>$file,width=>$w,height=>$h,caption=>$iptc["2#120"],keywords=>$iptc["2#025"]);
    foreach($iptc["2#025"] as $keyword){
        $list_map[$keyword]++;
    }
}

【讨论】:

  • 在我提交的示例中,如果关键字在 $iptc["2#025"] 数组中,它将被添加到数组中。
  • 这就是我的工作(我应该把 if 语句从我发送的数组样本中去掉)我想要做的是创建一个所有文件的数组,然后有一个计数的计数器对于每个唯一的关键字,然后当我选择一个文件时,我将被定向到一个页面,该页面与上述代码一起使用 if 语句并以我选择的文件的文件(计数关键字)开头。我的问题是,如果我能够提前知道所有关键字,我可以为每个关键字制作一系列 if else 语句
  • 我想我越来越近了...我遍历目录一次创建所有关键字的数组,然后创建一个仅包含唯一关键字的数组 foreach ($iptc["2#025" ] as $kw){ $keywords[]=$kw;} sort($keywords); $sorted = array_unique($keywords); foreach($sorted as $keyword => $value) $sortedkey = array_values($sorted);现在我想再次运行该目录并创建一个包含所有文件的数组,其中包含一个键,每个唯一关键字都会计数
猜你喜欢
  • 2021-03-23
  • 2013-01-05
  • 2012-10-12
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
相关资源
最近更新 更多