まず第一に、私の基本的なPHPスキルが、基本的または些細なことを尋ねるように私を駆り立てた場合、すみませんが、結果なしでサイトを検索しました(おそらく、そのようなものの専門用語がわからないためです..)
ループごとにネストされていますが、単純な変数($e)
に基づいて、ループ全体(2つのネストされた部分)を使用するか、1つ(内部)のみを使用する必要があります。
$a = array(); //some array ...
$c = array(); //some other array ...
$e = 'yes' // or 'no'
if ($a) {
foreach ($a as $b) {
$a_1[] = 'something_quite_long'; //that would affects $c if used
foreach ( $c as $d ) {
//do_something_very long...
}
}
}
だから今私はandを使ってこれを解決しましたswitch $e:
-case
しかしそれは私のコードの長さを複製するよりももっと重要です、なぜなら私がしたことはネストされたループ全体として1つのケースを作り、もう1つのケースは-唯一の内側のループ(これはloooongです) ..)コード全体をコピーして「」に貼り付けることなく、このような場合に使用できる忍者テクニックがあると確信していますが、case
どのようにすればよいかわかりません。
誰 ?
注:おそらく外部関数を使用できることはわかっていますが、問題は、非常に長い2番目(内部)のループで、言語出力(HTML)がわずかに変化する1つまたは2つのマイナーなケースがあることです。
編集I-コメントからの不明確さのために、ここにコードがあります(ループが大幅に削減されています-実際のループははるかに長くなっています)-質問には関係ありませんが。コードはワードプレスに関連しています。
function o99_get_image_size_links($title='',$single,$recieved_id) {
/* If not viewing an image attachment page, return. */
/* Set up an empty array for the links. */
$links = array();
/* Get the intermediate image sizes and add the full size to the array. */
$sizes = get_intermediate_image_sizes();
$sizes[] = 'full';
global $post;
switch ($single) {
case 'FALSE':
// this will do to all images attached to a post ..
$attachments = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment','post_mime_type' => $mime, 'order' => 'ASC', 'orderby' => 'menu_order ID', 'posts_per_page'=>$limit) );
/* Loop through each of the image sizes. */
if ($attachments) {
foreach ($attachments as $att) {
$links[] = '<br>' . get_the_title($att->ID) .' || '. basename ( get_attached_file( $att->ID ) ).' || '. $att->post_name .' || ' /*. wp_get_attachment_image( $att->ID, 'tooltip' ).' || ' .'<br/>'*/ ; // k99 add
if ($title) {
$links[] = '<br><b>' . $title . '</b></br>';
}
foreach ( $sizes as $size ) {
/* Get the image source, width, height, and whether it's intermediate. */
$image = wp_get_attachment_image_src( $att->ID, $size );
/* Add the link to the array if there's an image and if $is_intermediate (4th array value) is true or full size. */
if ( !empty( $image ) && ( true == $image[3] || 'full' == $size ) )
$links[] = "</br><a class='image-size-link_{$image[1]}×{$image[2]}' href='{$image[0]}'>{$image[1]} × {$image[2]}</a>";
}
}
}
break;
//case for single image ..
case 'TRUE':
$links[] = '<br>' . get_the_title($recieved_id) .' || '. basename ( get_attached_file( $recieved_id ) ).' || '. $att->post_name .' || ' /*. wp_get_attachment_image( $att->ID, 'tooltip' ).' || ' .'<br/>'*/ ; // k99 add
if ($title) {
$links[] = '<br><b>' . $title . '</b></br>';
}
foreach ( $sizes as $size ) {
/* Get the image source, width, height, and whether it's intermediate. */
$image = wp_get_attachment_image_src( $recieved_id, $size );
/* Add the link to the array if there's an image and if $is_intermediate (4th array value) is true or full size. */
if ( !empty( $image ) && ( true == $image[3] || 'full' == $size ) )
$links[] = "</br><a class='image-size-link_{$image[1]}×{$image[2]}' href='{$image[0]}'>{$image[1]} × {$image[2]}</a>";
}
break;
}
/* Join the links in a string and return. */
return join( '<span class="sep"> /</span> ', $links );
}