【问题标题】:PHP Cross Reference Part of an Array?数组的PHP交叉引用部分?
【发布时间】:2020-04-12 16:24:32
【问题描述】:

我从 FTP 文件夹中提取了一组文件名,其中包括商店编号和日期,例如“Store Evaluation_12345_2019-12-19_0000.pdf”。我们称数组为$file_list。我首先得到了当月的所有文件名 ($currentYearMonth = date('Y-m');)。接下来我提取了商店编号和日期,然后从日期中获取每个文件名的星期几,以及分配给每个商店的顾问:

// Create empty arrays to store our outputs
$SN = array();
$Day = array();
$BC = array();
$SNandDayEvals = array();

foreach($file_list as $eval) {
     if ((strpos($eval, '.pdf') !== false) && (strpos($eval, 'Store Evaluation') !== false) && (strpos($eval, $currentYearMonth) !== false)) {

          // Extract store number and date
          preg_match('/Store Evaluation_(.*?)_(.*?)_/', $eval, $filename);    
          $EvalStoreNum = $filename[1]; 
          $EvalDate = $filename[2];

          // Get day of week from filename date
          $EvalDay = date('D', strtotime($EvalDate));

          // Convert Store Number to Store's Username
          $username = 'shop'.$EvalStoreNum;

          // Get store from database by username
          $Shop = get_user_by('login', $username);

          // Get store's consultant
          $assignedBC = $Shop->Group;

          // Create new arrays
          $SN[] = $EvalStoreNum;
          $SNandDayEvals[] = $EvalStoreNum.'_'.$EvalDay;
     }
}

然后长话短说,我得到顾问的商店列表(数组 = $outputBCStores),并检查哪些文件名属于每个顾问:

$BCEvalsCompleted = array_intersect($SN, $outputBCStores);
$results = implode('<br>', $BCEvalsCompleted);
return = $results;

这可以很好地自行输出商店编号列表。现在我想弄清楚如何在商店编号旁边添加星期几。例如“12345”=>“12345(星期四)”。

我已尝试更改以下不起作用:

$SN[] = array( 'storenumber' => $EvalStoreNum, 'dayofweek' => $EvalStoreNum.' ('.$EvalDay.')');
$BCEvalsCompleted = array_intersect($SN['storenumber'], $outputBCStores);
$results = implode('<br>', $BCEvalsCompleted->$SN['dayofweek']);

不知道从这里去哪里。任何帮助将不胜感激。谢谢!

【问题讨论】:

  • $BCEvalsCompleted-&gt;$SN['dayofweek'] 是什么意思? -&gt; 用于访问对象属性,但$BCEvalsCompleted 是一个数组。

标签: php arrays if-statement foreach array-intersect


【解决方案1】:

我猜你想要做的是将$SN$BCEvalsCompleted的对应元素组合成一个字符串。你可以用array_map()来做到这一点

$results = implode('<br>', array_map(function($bc, $sn) {
    return "$bc {$sn['dayofweek']}";
}, $BCEvalCompleted, $SN));

【讨论】:

    猜你喜欢
    • 2020-03-03
    • 2021-12-10
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    相关资源
    最近更新 更多